Syntax 如何初始化对选项的可变引用结构字段?

Syntax 如何初始化对选项的可变引用结构字段?,syntax,reference,rust,mutable,Syntax,Reference,Rust,Mutable,如何初始化结构字段,该字段是对选项的可变引用?这是我的结构: pub struct Cmd<'a> { pub exec: String, pub args: &'a mut Option<Vec<String>>, } 但我得到了以下错误: 错误[E0308]:类型不匹配 -->src/main.rs:9:15 | 9 | args:无, |^^^^应为可变引用,找到枚举'std::option::option'` | =注意:应为

如何初始化结构字段,该字段是对
选项的可变引用
?这是我的结构:

pub struct Cmd<'a> {
    pub exec: String,
    pub args: &'a mut Option<Vec<String>>,
}
但我得到了以下错误:

错误[E0308]:类型不匹配
-->src/main.rs:9:15
|
9 | args:无,
|^^^^应为可变引用,找到枚举'std::option::option'`
|
=注意:应为类型`&mut std::option::option`
找到类型“std::option::option”`
=帮助:尝试使用`&mut None`

正确的语法是什么?

您只需要提供一个可变的引用。像这样:

let cmd = Cmd {
    exec: String::from("whoami"),
    args: &mut None,
};

您只需要提供一个可变的引用。像这样:

let cmd = Cmd {
    exec: String::from("whoami"),
    args: &mut None,
};

如果您没有指定,我们假设您使用的是当前稳定版本的Rust。如果您没有,强烈建议您升级。错误消息一直在改进。我没有意识到维护rust版本的不是brew。感谢您的提醒。如果您没有指定,我们假设您使用的是当前稳定版本的Rust。如果您没有,强烈建议您升级。错误消息一直在改进。我没有意识到维护rust版本的不是brew。谢谢你的提醒。现在我有点困惑了:什么是临时工的一生?在这里,临时的
None
似乎获得了一个延长的生存期(至少大于
cmd
),而我认为临时变量不会超过创建它们的表达式的计算时间。@MatthieuM包含的块范围的生存期将持续。如果它是作为函数参数传递的,那么它将只是紧接着的圆括号。请看:我找不到一个明确的答案,谷歌提供了一堆RFC/博客文章/PRs,但不清楚它们是否是最新的,所以我提出了一个问题:在这个问题中,我邀请你分享你的知识,因为你似乎知道规则:)现在我开始困惑:什么是临时工的生命周期?在这里,临时的
None
似乎获得了一个延长的生存期(至少大于
cmd
),而我认为临时变量不会超过创建它们的表达式的计算时间。@MatthieuM包含的块范围的生存期将持续。如果它是作为函数参数传递的,那么它将只是紧接着的圆括号。请看:我找不到一个明确的答案,谷歌提供了一堆RFC/博客文章/PRs,但不清楚它们是否是最新的,所以我提出了一个问题:在这个问题中,我邀请你分享你的知识,因为你似乎知道规则:)