Что происходит с локальными владельцами при панике во время раскрутки стека?
База Hintsage
Программирование Rust
Язык Rust и безопасное системное программирование.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по Rust.
Открыть раздел - 49 вопросов
Rust Core
Типы, pattern matching, modules и базовая семантика.
Открыть раздел - 50 вопросов
Владение и заимствование
Ownership, borrowing, moves и правила безопасной памяти.
Открыть раздел - 50 вопросов
Времена жизни
Lifetime annotations и связи времени жизни ссылок.
Открыть раздел - 49 вопросов
Traits и generics
Traits, bounds, generics, associated types и dispatch.
Открыть раздел - 50 вопросов
Конкурентность и async
Send/Sync, threads, channels, futures и async runtime.
Открыть раздел - 50 вопросов
Обработка ошибок
Result, Option, оператор ?, panic и проектирование ошибок.
Открыть раздел - 50 вопросов
Unsafe и память
Unsafe Rust, raw pointers, FFI и инварианты безопасности.
Открыть раздел
Практика
Вопросы: Программирование Rust
Практическая ситуация: почему замыканию, передаваемому в новый поток, часто требуется захватить значение по владению, а не по заимствованию?
Каким механизмом RefCell<T> позволяет изменять данные через неизменяемую ссылку, не нарушая правил безопасной памяти Rust?
Представьте, что в Vec есть ссылка на элемент: по какой причине Rust не позволяет изменить размер этого вектора, пока ссылка используется?
Почему безопасная структура Rust не может напрямую хранить ссылку на собственное поле?
Как Rust определяет, что одновременные заимствования двух разных полей структуры безопасны?
Каким образом заменить поле структуры через изменяемую ссылку, не перемещая его наружу?
Сравните владение через Rc<T> с обычным владением: как определяется момент освобождения общего значения?
При присваивании неизменяемой ссылки другой переменной что именно копируется и почему исходное значение не дублируется?
Разберите, почему перемещение Box<T> не перемещает объект в памяти, но всё равно может быть запрещено при активной ссылке на этот объект.
Объясните механизм двухфазного изменяемого заимствования в вызове метода, где аргумент вычисляется из того же объекта.
Разберите ошибку компиляции: какая связь между временем жизни ссылки и владельцем значения нарушена?
fn make_label() -> &str {
let label = String::from("ready");
&label
}
fn main() {
println!("{}", make_label());
}
Объясните механизм: почему Rust иногда разрешает изменить значение сразу после последнего чтения через неизменяемое заимствование, хотя ссылка ещё находится в области видимости?
Практическая ситуация: функция многократно передаёт одну изменяемую ссылку в другие вызовы. Почему исходная ссылка остаётся доступной после каждого вызова?
В какой момент Rust освобождает ресурс, принадлежащий локальной переменной, если её владелец выходит из области видимости?
Что происходит со структурой Rust после перемещения из неё одного поля, если остальные поля не перемещены?
На каком основании Rust разрешает вернуть заимствованную ссылку из функции, получившей несколько входных заимствований?
Какое правило заимствования гарантирует отсутствие конфликта между чтением и записью данных?
Как изменится доступ к значению после передачи его владельца в другую переменную, если тип значения не реализует Copy?
У публичной структуры одно поле объявлено без pub: что именно сможет и чего не сможет сделать код из другого crate?
Показано 281–300 из 348