4Manuals

  • PDF Cloud HOME

了解rust Option as_mut方法 Download

    货物建造未在wasm项目上生成pkg目录 如何为Rustdoc上下文解释“在此范围内找不到派生宏`Cacheable`” 受约束的特征`tokio :: net :: tcp :: stream :: TcpStream:tokio_io :: async_read :: AsyncRead`不满意 如何在Java 8中过滤Optional.empty 如何在Rust中将`Fn`特征与`impl trait`返回类型一起使用? 如何在选项数组中正确分配值? 在Hyper Body结构上添加换行符 更改其他线程中的值并断言后一个(在“主”线程中) 如何检查<experimental / optional>是否具有值? 使用PhantomData <T>时,不满足特征绑定`T:std :: default :: Default`

给出生锈选项:

let mut x = Some(3);

为什么我可以直接致电x.as_mut()?从the doc中可以看到,as_mut被定义为:

  

pub fn as_mut(&mut self) -> Option<&mut T>从&mut转换   选项为Option 。

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

1 个答案:

答案 0 :(得分:1)

在此,Rust的.运算符可以执行您的意思,并隐式借用该变量。如果不是这样,使用值将很烦人,因为声明为例如如果不先借用let mut v = vec![1, 2, 3],就不能用v.push(4)来操纵v。相同的限制也适用于字段,因此,如果结构包含一个向量,则您必须先借用container.vec.push(element)才能调用container.vec(即使`container本身是已经是参考)。

为防止这种噪声的需求促使C引入了额外的操作员进行现场访问,因此最终以.和->开头,后者自动取消引用。 Rust的.故意进行,并进行方法调用工作所需的借用或取消引用。



Similar searches
    R:计算向量总和的最快方法? 为什么System.Net.Mail.MailAddress构造函数在域部分中解析带有斜杠“ /”的电子邮件? core.js:4070错误错误:“路由器出口”不是已知元素: 更改表格以在postgres中添加“按范围划分” 如何使用gRPC proto实现不同数据类型的动态自定义字段