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

Одна изменяемая и другие ссылки в 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" через ссылку для чтения, затем допишите "!" через изменяемую ссылку и выведите результат.

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