mut s = String::from("hello");
let r1 = &mut s;
let r2 = &mut s;
Но так делать можно:
let mut s = String::from("hello");
{
let r1 = &mut s;
}
let r2 = &mut s;
Пока все понятно.
Но я попробовал сделать так и все равно работает
let mut s = String::from("hello");
let r2 = &mut s;
{
let r1 = &mut s;
}
Вопрос почему?
Ведб r2 все равно видна в скоупе блока фигурных скобок. По сути так же как и в 1 примере.
Но если заюзать там r2, то сломается
nll. Компилятор видит что ты r1 не используешь после создания r2 и дропает его.
В первом случае в примере выше, r2 где-то дропается?
Как только r2 создаётся.
r1 вы имеои ввилду?
А как расшифровывается?
Non lexical lifetimes
Теперь можно и первый случай. Дока немного устарела, если так говорит. Нельзя будет только воспользоваться r1.
в доке ещще было принтлн этих переменных, поэтому еррор
Обсуждают сегодня