给出生锈选项: 为什么我可以直接致电 ,它期望第一个参数为 答案 0 :(得分:1) 在此,Rust的 为防止这种噪声的需求促使C引入了额外的操作员进行现场访问,因此最终以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 个答案:
.
运算符可以执行您的意思,并隐式借用该变量。如果不是这样,使用值将很烦人,因为声明为例如如果不先借用let mut v = vec![1, 2, 3]
,就不能用v.push(4)
来操纵v
。相同的限制也适用于字段,因此,如果结构包含一个向量,则您必须先借用container.vec.push(element)
才能调用container.vec
(即使`container本身是已经是参考)。.
和->
开头,后者自动取消引用。 Rust的.
故意进行,并进行方法调用工作所需的借用或取消引用。