Конец значения и имени в 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, когда внутренний блок
заканчивается.