我想将一个对某种类型(例如String
下面的示例)采用任意迭代器的函数传递给另一个函数,但我不知道如何指定此类函数的类型。
这是我想要实现的目标的最小(非工作)示例。编译器无法推断I
.
fn process<I>(lines: I)
where
I: Iterator<Item = String>, // or IntoIterator
{
for line in lines {
println!("{}", line.to_uppercase());
}
}
fn run<F, I>(processor: F)
where
I: Iterator<Item = String>,
F: Fn(I),
{
let v = vec![
String::from("aaa"),
String::from("BBB"),
String::from("cCcC"),
];
processor(v.iter());
}
fn main() {
run(process);
}