在本文“Why is "&&" being used in closure arguments?”中接受的答案中,答案的作者指出:
查找是为所有迭代器定义的方法。它允许您查看每个元素并返回与谓词匹配的元素。问题:如果迭代器生成不可复制的值,那么将值传递到谓词将使从find返回该值变得不可能。该值不能重新生成,因为迭代器(在一般情况下)是不可重绕或可重新启动的。因此,find必须通过引用而不是按值将元素传递给谓词。
如果迭代器在引用上工作,那么如果迭代器只能访问引用类型的值,它们如何返回不可复制的类型?
发布于 2021-11-16 02:37:57
T上工作,这可能是一个引用,或者是一些不可复制的拥有结构。find函数获得T的引用。因此,如果是&&i32.T = &i32将与&&T一起工作--这对&&T并没有太大的帮助。但是,虽然我个人并不需要它,&mut &T可以做一些有趣的事情。例如:fn main() {
let mut foo = "asdf";
bend(&mut foo);
println!("{}", foo);
}
fn bend(s: &mut &str) {
*s = "bsdf";
}https://stackoverflow.com/questions/69982486
复制相似问题