关于这个示例,我有两个问题:
let a = [1, 2, 3];
assert_eq!(a.iter().find(|&&x| x == 2), Some(&2));
assert_eq!(a.iter().find(|&&x| x == 5), None);
为什么在闭包参数中使用
&&x
而不是只用x
?我知道&
是传递对象的引用,但使用两次它意味着什么?我不理解文档所说的:
因为
find()
接受一个引用,而许多迭代器迭代引用,这会导致一个可能令人困惑的情况,即参数是一个双重引用。你可以在下面的示例中看到这种效果,其中使用了&&x
。为什么要使用
Some(&2)
而不是Some(2)
?
&[i32]
”,根据这里,一个数组a
可以自动借用为一个切片&a
。 - Sajuuk