Why function foo
doesn't work?
type PrintFn<I> = Box<dyn Fn(I)>;
fn print<I>() -> PrintFn<I>
where
I: IntoIterator<Item = String>,
{
Box::new(|iter| {
for s in iter.into_iter() {
println!("{} ", s);
}
})
}
fn foo<I>(print_fn: PrintFn<I>)
where
I: IntoIterator<Item = String>,
{
let v = vec!["a".to_string(), "b".to_string(), "c".to_string()];
print_fn(v.into_iter().skip(1)); // it doesn't work
}
fn main() {
let print_fn = print();
let v = vec!["1".to_string(), "2".to_string(), "3".to_string()];
print_fn(v.into_iter().skip(1)); // it works
}