给定一个 Rust 选项:
let mut x = Some(3);
Run Code Online (Sandbox Code Playgroud)
为什么我可以直接打电话x.as_mut()
?正如我从文档中看到的,as_mut
定义为:
pub fn as_mut(&mut self) -> Option<&mut T>
从 &mut Option 转换为 Option<&mut T>。
它期望第一个参数是&mut self
,即&mut Option<T>
。我不应该用它(&mut x).as_mut()
来代替吗?
这里 Rust 的.
运算符执行您的意思并隐式借用变量。如果没有,使用非借用值会很烦人,因为声明为 eg 的值let mut v = vec![1, 2, 3]
无法v.push(4)
在不写入 的情况下使用 eg 进行操作(&mut v).push(4)
。这同样适用于字段,因此如果结构体包含container.vec.push(element)
向量,则在没有显式借用的情况下将无法调用container.vec
,即使container
它本身就是可变引用。
为了防止这种噪音,C 有两个用于字段访问的运算符.
和->
,其中后者自动取消引用。Rust.
有意继续进行方法调用工作所需的借用或取消引用。
归档时间: |
|
查看次数: |
4014 次 |
最近记录: |