РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
468 of 1245 menu

Изменяемое заимствование &mut

Изменяемое заимствование &mut позволяет временно получить доступ к значению с правом его изменения, не забирая владение. Параметром заимствование принимает переменную, объявленную через let mut. При этом одновременно может существовать только одно изменяемое заимствование, и на время его жизни нельзя иметь ни неизменяемых заимствований, ни прямого доступа к исходной переменной.

Синтаксис

&mut value

Пример

Давайте создадим изменяемую переменную и изменим её значение через изменяемое заимствование:

fn main() { let mut x = 5; let y = &mut x; *y = 10; println!("{}", x); }

Результат выполнения кода:

10

Пример

Давайте передадим изменяемое заимствование в функцию, которая увеличивает значение на единицу:

fn increment(n: &mut i32) { *n += 1; } fn main() { let mut x = 5; increment(&mut x); println!("{}", x); }

Результат выполнения кода:

6

Пример

Давайте изменим содержимое вектора через изменяемое заимствование:

fn main() { let mut v = vec![1, 2, 3, 4, 5]; let r = &mut v; r.push(6); println!("{:?}", v); }

Результат выполнения кода:

[1, 2, 3, 4, 5, 6]

Пример

Давайте попробуем создать два изменяемых заимствования одновременно и убедимся, что компилятор это запрещает:

fn main() { let mut x = 5; let a = &mut x; let b = &mut x; println!("{} {}", a, b); }

Результат выполнения кода:

error[E0499]: cannot borrow `x` as mutable more than once at a time

Смотрите также

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить