除了允许变量被const
函数修改之外,mutable
关键字没有任何其他用途。这是因为使用mutable
关键字只允许你修改已经声明为可变的数据类型。
如果你声明了一个const mutable
变量,它的类型就变成了一个mutable
的,这是因为你可以修改它。例如:
#[derive(Debug)]
struct MyStruct {
value: i32,
}
impl MyStruct {
fn value(&mut self) -> i32 {
self.value += 1;
self.value
}
}
fn main() {
let mut my_struct = MyStruct { value: 0 };
my_struct.value(); // 输出:1
println!("{:?}", my_struct); // 输出: { value: 1 }
let const_mut_my_struct = MyStruct {
value: 0,
};
const_mut_my_struct.value(); // 这里会编译错误,因为变量无法被const函数修改
// 将const_mut_my_struct从const mutable类型解绑,变为普通const类型
const_mut_my_struct = MyStruct::default();
const_mut_my_struct.value(); // 这里输出:0
// 使用变量my_struct和const_mut_my_struct,都将是可变的
my_struct.value(); // 将输出:2
const_mut_my_struct.value();
}
总之,mutable
关键字只允许你修改已经声明为可变的数据类型。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云