最佳答案
虽然向量最适合程序编程,但是我想在它们上面使用一个 map
函数。下面的代码片段可以工作:
fn map<A, B>(u: &Vec<A>, f: &Fn(&A) -> B) -> Vec<B> {
let mut res: Vec<B> = Vec::with_capacity(u.len());
for x in u.iter() {
res.push(f(x));
}
res
}
fn f(x: &i32) -> i32 {
*x + 1
}
fn main() {
let u = vec![1, 2, 3];
let v = map(&u, &f);
println!("{} {} {}", v[0], v[1], v[2]);
}
为什么标准库中没有这样的函数?(以及 std::collections::LinkedList
)。还有别的办法吗?