rust - 在单个匹配语句中设置和返回可选属性
问题描述
我有以下代码做两件事:
如果未设置,则设置可选属性
获取[借用的引用]属性的值(应该设置)
这是代码:
struct Object {
property: Option<String>,
}
fn main() {
let mut object = Object { property : None };
/* other code */
match object.property {
None => {
object.property = Some(String::from("Hello"));
},
Some(_) => (),
};
let property = match &object.property {
None => panic!("property should be set"),
Some(property) => property,
}
/* other code */
}
我试图将这两个步骤合二为一,但我遇到了移动值和生命周期问题。
let property = match object.property {
None => {
let property = String::from("Hello");
object.property = Some(property); //<-- property is moved into the Option struct
&property //<-- issue
},
Some(property) => &property,
};
是否有正确的方法来重写此代码以使其编译,我猜是通过让编译器知道的生命周期property
将持续与生命周期一样长object
?