mut foo: T
означає, що у вас є змінна з назвою foo
a T
. Вам дозволено змінити, до чого відноситься змінна :
let mut val1 = 2;
val1 = 3;
let val2 = 2;
val2 = 3;
Це також дозволяє вам змінювати поля структури, якою ви володієте:
struct Monster { health: u8 }
let mut orc = Monster { health: 93 };
orc.health -= 54;
let goblin = Monster { health: 28 };
goblin.health += 10;
foo: &mut T
означає, що у вас є змінна, яка посилається на ( &
) значення, і вам дозволено змінити ( mut
) вказане значення (включаючи поля, якщо це структура):
let val1 = &mut 2;
*val1 = 3;
let val2 = &2;
*val2 = 3;
Зверніть увагу, що це &mut
має сенс лише за допомогою посилання - foo: mut T
неприпустимий синтаксис. Ви також можете поєднати два кваліфікатори ( let mut a: &mut T
), коли це має сенс.
const
протиpointee
const .