Хотя векторы лучше всего подходят для процедурного программирования, я хотел бы использовать для них функцию 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
). Есть ли другой способ справиться с этим?