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

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

Оператор & создает неизменяемую ссылку на значение. Этот механизм называется заимствованием, потому что вы не становитесь владельцем данных, а лишь временно получаете к ним доступ. Параметром выступает переменная или значение, на которое нужно создать ссылку. При этом оригинальный владелец сохраняет свои права, и данные остаются в памяти до тех пор, пока жива ссылка.

Синтаксис

&value &mut value // для изменяемого заимствования

Пример

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

fn main() { let s = "abcde"; let ref_s = &s; println!("{}", ref_s); }

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

"abcde"

Пример

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

fn print_length(s: &String) { println!("Length: {}", s.len()); } fn main() { let s = String::from("12345"); print_length(&s); println!("Owner still has: {}", s); }

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

Length: 5 Owner still has: 12345

Пример

Давайте создадим несколько неизменяемых ссылок на одни и те же данные:

fn main() { let s = String::from("abcde"); let ref1 = &s; let ref2 = &s; println!("{} {}", ref1, ref2); }

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

abcde abcde

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

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