相关疑难解决方法(0)

为什么在这里使用"&&"?

在这里有两个问题.

let a = [1, 2, 3];

assert_eq!(a.iter().find(|&&x| x == 2), Some(&2));
assert_eq!(a.iter().find(|&&x| x == 5), None);
Run Code Online (Sandbox Code Playgroud)

1.为什么&&x在闭包参数中使用而不仅仅是x?(我理解"&"正在传递一个对象的引用,但是两次使用它的意思是什么?)

这本书写道:

因为find()接受引用,并且许多迭代器遍历引用,这导致可能令人困惑的情况,其中参数是双引用.您可以在下面的示例中看到此效果,使用&& x.

但我真的不明白.

2.为什么&用而不是find()

reference rust borrowing

9
推荐指数
1
解决办法
576
查看次数

使用 * 和 & 比较相等的值有什么区别?

我想我在非常高的层次上理解Rust&*Rust之间的区别,因为它与内存管理有关。

以下代码片段有什么区别。应用一种方法与另一种方法是否存在危险?

for (i, item) in bytes.iter().enumerate() {
    if *item == b' ' {
        return i;
    }
}
Run Code Online (Sandbox Code Playgroud)
for (i, &item) in bytes.iter().enumerate() {
    if item == b' ' {
        return i;
    }
}
Run Code Online (Sandbox Code Playgroud)
for (i, item) in bytes.iter().enumerate() {
    if item == &b' ' {
        return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

据我了解,当我返回一个值时,iter()我将返回对bytes. 如果我想对项目进行比较,我需要在两个引用之间进行比较,&u8或者我需要自己进行&item引用,以便在我调用item它时是 type u8,或者我需要item在比较时取消引用,以便item= &u8- > *item= u8。 …

rust

5
推荐指数
1
解决办法
180
查看次数

标签 统计

rust ×2

borrowing ×1

reference ×1