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

Правило заимствований

Правило заимствований - это фундаментальное ограничение системы владения Rust, которое контролирует количество и тип ссылок на одни и те же данные в определённой области видимости. Оно гласит: у вас может быть либо любое количество неизменяемых ссылок, либо только одна изменяемая ссылка на конкретное значение одновременно. Это правило применяется компилятором для статической проверки безопасности памяти без сборщика мусора.

Синтаксис

Правило не имеет специального синтаксиса, но его действие проявляется при создании ссылок:

let x = 5; let r1 = &x; // immut borrow let r2 = &x; // immut borrow is ok // let m = &mut x; // ERROR: cannot borrow as mutable because also borrowed as immutable

Пример

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

fn main() { let x = 5; let r1 = &x; let r2 = &x; println!("{} {}", r1, r2); }

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

5 5

Пример

Попытка создать изменяемую ссылку, когда уже есть неизменяемая, приведёт к ошибке компиляции:

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

Результат выполнения кода (ошибка компиляции):

error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable

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

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