Одна изменяемая и другие ссылки в Rust
На одно значение в один момент допускается либо несколько ссылок только для чтения, либо ровно одна изменяемая. Смешать изменяемую ссылку с любой другой на тот же текст компилятор не разрешает.
Попробуем держать чтение и изменение одновременно:
let mut name = String::from("ann");
let r = &name;
let m = &mut name;
println!("{}", r);
Такой фрагмент не собирается: пока живет
m, обычная ссылка r на то
же имя недопустима. Сначала заканчивают
работу с одной ссылкой, потом открывают
другую:
let mut name = String::from("ann");
{
let r = &name;
println!("{}", r);
}
let m = &mut name;
m.push_str("a");
println!("{}", name);
Дан следующий код:
let mut s = String::from("a");
let a = &s;
let b = &mut s;
println!("{}", a);
Скажите, соберется ли программа.
Дан следующий код:
let mut line = String::from("go");
let first = &line;
let second = &line;
println!("{}", first);
println!("{}", second);
Скажите, мешают ли две ссылки для чтения друг другу.
Исправьте порядок действий: сначала
прочитайте строку "hi" через
ссылку для чтения, затем допишите
"!" через изменяемую ссылку
и выведите результат.