The closure passed to map() does not take a reference while the one passed to filter() takes a reference in Rust. Most of the iterator adapters take a reference. Is there any reason why map() does not take a reference in Rust?
let a = (0..3).map(|x| x*2);
for i in a {
println!("map i = {}", i);
}
let a = (0..3).filter(|&x| x % 2 == 0);
for i in a {
println!("filter i = {}", i);
}