Keyword mut

source ·
Expand description

可变变量,引用或指针。

mut 可以在多种情况下使用。 第一种是可变变量,它可以在任何可以将值绑定到变量名的地方使用。一些例子:

// 函数的参数列表中的可变变量。
fn foo(mut x: u8, y: u8) -> u8 {
    x += y;
    x
}

// 修改可变变量。
let mut a = 5;
a = 6;

assert_eq!(foo(3, 4), 7);
assert_eq!(a, 6);
Run

第二种是可变引用。 它们可以从 mut 变量创建,并且必须是唯一的:其他变量不能有可变引用,也不能有共享引用。

// 采取可变引用。
fn push_two(v: &mut Vec<u8>) {
    v.push(2);
}

// 可变引用不能用于非可变变量。
let mut v = vec![0, 1];
// 通过可变引用。
push_two(&mut v);

assert_eq!(v, vec![0, 1, 2]);
Run
let mut v = vec![0, 1];
let mut_ref_v = &mut v;
#[allow(unused)]
let ref_v = &v;
mut_ref_v.push(2);
Run

可变裸指针的工作方式与可变引用非常相似,但增加了不指向有效对象的可能性。 语法是 *mut Type

有关可变引用和指针的更多信息,请参见 Reference