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);
}