是否可以直接修改枚举中嵌入的值?
以下error: cannot borrow immutable anonymous field `a.0` as mutable
失败,即使我使用了ref mut
。
enum Foo {
Bar(usize),
}
fn main() {
let a = Foo::Bar(10);
match a {
Foo::Bar(ref mut val) => *val = 33,
}
match a {
Foo::Bar(val) => println!("{}", val), // should print 33
}
}
这不是一个大问题,因为我可以做以下的解决方法:
match a {
Foo::Bar(val) => a = Foo::Bar(33),
}
但这是正确的方法吗?
答案 0 :(得分:2)
您需要将a
的绑定设为可变。
enum Foo {
Bar(usize),
}
fn main() {
let mut a = Foo::Bar(10);
match a {
Foo::Bar(ref mut val) => *val = 33,
}
match a {
Foo::Bar(val) => println!("{}", val), // 33
}
}