Skip to content

Commit 4cd1813

Browse files
authored
Merge pull request #1668 from dtolnay/foldhelper
Eliminate FoldHelper trait
2 parents 6e20bb8 + ed54092 commit 4cd1813

File tree

4 files changed

+117
-133
lines changed

4 files changed

+117
-133
lines changed

codegen/src/fold.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ fn visit(
3434
let Type::Syn(t) = &**t else { unimplemented!() };
3535
let method = method_name(t);
3636
Some(quote! {
37-
FoldHelper::lift(#name, f, F::#method)
37+
fold_vec(#name, f, F::#method)
3838
})
3939
}
4040
Type::Punctuated(p) => {
@@ -230,9 +230,6 @@ pub fn generate(defs: &Definitions) -> Result<()> {
230230
clippy::needless_pass_by_ref_mut,
231231
)]
232232

233-
#[cfg(any(feature = "full", feature = "derive"))]
234-
use crate::gen::helper::fold::FoldHelper;
235-
236233
#full_macro
237234

238235
/// Syntax tree traversal to transform the nodes of an owned syntax tree.
@@ -245,6 +242,15 @@ pub fn generate(defs: &Definitions) -> Result<()> {
245242
}
246243

247244
#impls
245+
246+
#[cfg(any(feature = "derive", feature = "full"))]
247+
fn fold_vec<T, V, F>(vec: Vec<T>, fold: &mut V, mut f: F) -> Vec<T>
248+
where
249+
V: ?Sized,
250+
F: FnMut(&mut V, T) -> T,
251+
{
252+
vec.into_iter().map(|it| f(fold, it)).collect()
253+
}
248254
},
249255
)?;
250256
Ok(())

0 commit comments

Comments
 (0)