了解 rust Option as_mut 方法

Understand rust Option as_mut method

给定一个 rust 选项:

let mut x = Some(3);

为什么我可以直接调用x.as_mut()?从the doc可以看出,as_mut定义为:

pub fn as_mut(&mut self) -> Option<&mut T> Converts from &mut Option to Option<&mut T>.

期望第一个参数为 &mut self,即 &mut Option<T>。我不应该改用 (&mut x).as_mut() 吗?

这里 Rust 的 . 运算符按照您的意思执行并隐式借用了变量。如果没有,使用非借用值会很烦人,因为一个值被声明为例如如果不先借用 vlet mut v = vec![1, 2, 3] 就无法用 v.push(4) 进行操作。同样的限制也适用于字段,所以如果一个结构 包含 一个向量,你将无法在不先借用 container.vec 的情况下调用 container.vec.push(element) (即使 container 本身已经是引用了)。

为了防止这种干扰,C 有两个用于字段访问的运算符,.->,后者会自动取消引用。 Rust 的 . 有意继续执行方法调用所需的借用或取消引用。