【问题标题】:Understand rust Option as_mut method [duplicate]了解 rust Option as_mut 方法 [重复]
【发布时间】:2020-04-19 13:42:41
【问题描述】:

给定一个 rust 选项:

let mut x = Some(3);

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

pub fn as_mut(&mut self) -> Option<&mut T> 从 &mut 转换 Option 到 Option.

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

【问题讨论】:

    标签: rust optional


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 2015-12-14
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多