eii*_*000 2 closures iterator reference ownership rust
传递给的闭包map()不接受引用,而传递给的闭包filter()在 Rust 中接受引用。大多数迭代器适配器都有一个参考。有什么理由map()不在 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);
}
Run Code Online (Sandbox Code Playgroud)
.map(<closure>)并且.filter(<closure>)有不同的用途。
.map(<closure>) 将迭代器元素的所有权赋予闭包,以便它们可以转换为新元素,然后由闭包返回。
但是,.filter(<closure>)当闭包谓词评估为真时返回原始元素。因此,它不能将元素的所有权交给闭包,因此它必须通过引用传递元素。