Как изменится доступ к значению после передачи его владельца в другую переменную, если тип значения не реализует Copy?
База Hintsage
Владение и заимствование
Ownership, borrowing, moves и правила безопасной памяти.
Практика
Вопросы: Владение и заимствование
Какое правило заимствования гарантирует отсутствие конфликта между чтением и записью данных?
На каком основании Rust разрешает вернуть заимствованную ссылку из функции, получившей несколько входных заимствований?
Что происходит со структурой Rust после перемещения из неё одного поля, если остальные поля не перемещены?
В какой момент Rust освобождает ресурс, принадлежащий локальной переменной, если её владелец выходит из области видимости?
Практическая ситуация: функция многократно передаёт одну изменяемую ссылку в другие вызовы. Почему исходная ссылка остаётся доступной после каждого вызова?
Объясните механизм: почему Rust иногда разрешает изменить значение сразу после последнего чтения через неизменяемое заимствование, хотя ссылка ещё находится в области видимости?
Разберите ошибку компиляции: какая связь между временем жизни ссылки и владельцем значения нарушена?
fn make_label() -> &str {
let label = String::from("ready");
&label
}
fn main() {
println!("{}", make_label());
}
Объясните механизм двухфазного изменяемого заимствования в вызове метода, где аргумент вычисляется из того же объекта.
Разберите, почему перемещение Box<T> не перемещает объект в памяти, но всё равно может быть запрещено при активной ссылке на этот объект.
При присваивании неизменяемой ссылки другой переменной что именно копируется и почему исходное значение не дублируется?
Сравните владение через Rc<T> с обычным владением: как определяется момент освобождения общего значения?
Каким образом заменить поле структуры через изменяемую ссылку, не перемещая его наружу?
Как Rust определяет, что одновременные заимствования двух разных полей структуры безопасны?
Почему безопасная структура Rust не может напрямую хранить ссылку на собственное поле?
Представьте, что в Vec есть ссылка на элемент: по какой причине Rust не позволяет изменить размер этого вектора, пока ссылка используется?
Каким механизмом RefCell<T> позволяет изменять данные через неизменяемую ссылку, не нарушая правил безопасной памяти Rust?
Практическая ситуация: почему замыканию, передаваемому в новый поток, часто требуется захватить значение по владению, а не по заимствованию?
Что происходит с локальными владельцами при панике во время раскрутки стека?
Что определяет, захватит ли замыкание переменную по ссылке или переместит её?
Показано 1–20 из 50