【发布时间】:2020-06-22 15:14:51
【问题描述】:
我想将my_id(仅当存在)更改为另一个值:
fn read(id: &mut i32) {
*id = 42;
}
struct S {
my_id: Option<i32>,
}
impl S {
fn run(&mut self) {
match self.my_id {
Some(mut id) => read(&mut id),
_ => (),
}
}
}
fn main() {
let mut s = S { my_id: 0.into() };
s.run();
println!("{:?}", s.my_id);
}
这段代码打印Some(0),表示替换失败,但我不明白为什么。我是否因为模式匹配而失去了可变性?
【问题讨论】:
标签: rust pattern-matching mutability