#[cfg(feature = "fold")] pub(crate) mod fold { use crate::punctuated::{Pair, Punctuated}; pub(crate) trait FoldHelper { type Item; fn lift(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item; } impl FoldHelper for Vec { type Item = T; fn lift(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item, { self.into_iter().map(f).collect() } } impl FoldHelper for Punctuated { type Item = T; fn lift(self, mut f: F) -> Self where F: FnMut(Self::Item) -> Self::Item, { self.into_pairs() .map(Pair::into_tuple) .map(|(t, u)| Pair::new(f(t), u)) .collect() } } }