Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmErEn 316 of 373 menu
◀ ▶

Конец значения и имени в Rust

Значение в Rust связано с именем переменной. Пока имя видно в блоке, данные остаются в памяти. Когда блок заканчивается, имя исчезает из области, и значение кончается вместе с этим именем. Для длинной строки и для вектора это означает, что занятая память освобождается автоматически.

Строку можно держать только внутри фигурных скобок, а снаружи обращаться к ней уже нельзя:

{ let label = String::from("temp"); println!("{}", label); } println!("{}", label);

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

{ let items = vec![1, 2, 3]; println!("{}", items.len()); } println!("{}", items.len());

Дан следующий код:

{ let word = String::from("end"); } let next = word;

Скажите, соберется ли программа.

Дан следующий код:

let outer = String::from("stay"); { let inner = String::from("go"); println!("{}", inner); } println!("{}", outer);

Скажите, какая строка еще доступна после внутреннего блока.

Скажите, что происходит с памятью строки inner, когда внутренний блок заканчивается.

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