1 #[cfg(feature = "fold")]
2 pub(crate) mod fold {
3     use crate::punctuated::{Pair, Punctuated};
4 
5     pub(crate) trait FoldHelper {
6         type Item;
lift<F>(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item7         fn lift<F>(self, f: F) -> Self
8         where
9             F: FnMut(Self::Item) -> Self::Item;
10     }
11 
12     impl<T> FoldHelper for Vec<T> {
13         type Item = T;
lift<F>(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item,14         fn lift<F>(self, f: F) -> Self
15         where
16             F: FnMut(Self::Item) -> Self::Item,
17         {
18             self.into_iter().map(f).collect()
19         }
20     }
21 
22     impl<T, U> FoldHelper for Punctuated<T, U> {
23         type Item = T;
lift<F>(self, mut f: F) -> Self where F: FnMut(Self::Item) -> Self::Item,24         fn lift<F>(self, mut f: F) -> Self
25         where
26             F: FnMut(Self::Item) -> Self::Item,
27         {
28             self.into_pairs()
29                 .map(Pair::into_tuple)
30                 .map(|(t, u)| Pair::new(f(t), u))
31                 .collect()
32         }
33     }
34 }
35