Rust 是否有“get_或_insert()”的替代方法来提取选项<;T>;不吃它?
我想编辑Rust 是否有“get_或_insert()”的替代方法来提取选项<;T>;不吃它?,rust,Rust,我想编辑选项中的内容,而不使用它。下面的代码似乎是一种方式,但我认为使用get\u或\u insert()有些不必要和多余 #[derive(Debug)] struct S { state: String, } fn main() { let mut x = Some(S { state: String::from("Some is definitely set"), }); let y: &mut S = x.get_or_inser
选项中的内容,而不使用它。下面的代码似乎是一种方式,但我认为使用get\u或\u insert()
有些不必要和多余
#[derive(Debug)]
struct S {
state: String,
}
fn main() {
let mut x = Some(S {
state: String::from("Some is definitely set"),
});
let y: &mut S = x.get_or_insert(S {
state: String::from("Just hack. This is definitely not going to be inserted"),
});
y.state = String::from("Check out x");
println!("{:#?}", x);
}
除了get\u或
之外,还有其他方法可以在不使用它的情况下拉出选项的引用吗?阅读您的评论后,我猜您的目标是x。as\u mut().unwrap()
:
我不懂你的逻辑。您有一个选项
,这意味着您不知道数据是否存在。如果选项
为None
,则无法获取对数据的引用以对其进行变异。您希望如何提高效率?当它是None
时会发生什么?我想x.get_或_insert_with(| | None)
可能会更好一点(因为它可以确保如果选项是None
,它将保持None
),但它仍然是一个笨拙的构造。@Shepmaster好吧,为了简化,我想要的是unwrap()的另一个版本
这会使您惊慌失措或返回一个参考。您的问题似乎可以由的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将此问题标记为已回答。请在回答之前搜索重复的问题。
#[derive(Debug)]
struct S {
state: String,
}
fn main() {
let mut x = Some(S {
state: String::from("Some is definitely set"),
});
x.as_mut().unwrap().state = String::from("Check out x");
println!("{:#?}", x);
}