Какой инвариант делает чтение значения через raw pointer некорректным, даже если адрес охватывает достаточно байт?
База 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
Как unsafe extern определяет место проверки контракта безопасности при вызове FFI-функции?
Объясните, чем опасен для C callback Rust с совпадающей сигнатурой, но обычным Rust ABI?
При передаче структуры Rust в C какое представление нужно выбрать, чтобы C корректно использовал смещения её полей?
Разберите, какие дополнительные инварианты возникают в момент превращения raw pointer в ссылку Rust.
Какие последствия возникают, если паника Rust пересекает границу функции с ABI C?
Кому должна быть возвращена память, выделенная Rust и переданная через FFI в виде raw pointer?
Что именно гарантирует компилятор Rust, когда разыменование raw pointer помещено в unsafe-блок?
Сценарий: FFI возвращает указатель на буфер и его длину. Что нужно доказать перед созданием из них Rust-среза?
На границе FFI C-функции передали указатель, полученный из изменяемой ссылки. Какое поведение C-кода сохраняет инвариант уникального доступа Rust?
Сервис получает текст конфигурации, но при ошибке подставляет значение по умолчанию. Что напечатает программа и какой результат операции при этом теряется?
fn load_config() -> Result<String, &'static str> {
Err("файл недоступен")
}
fn main() {
let config = load_config().unwrap_or_default();
println!("{config:?}");
}
В многопоточном сервисе рабочий поток возвращает Result, но может аварийно завершиться паникой. Как join различает эти два исхода?
Чем различаются panic! и panic_any! с точки зрения типа payload, доступного после перехвата паники?
В отладочном слое нужно записать успешное значение Result, не меняя ни значение, ни ошибку: какой метод применить и чем он отличается от преобразующего комбинатора?
Зачем в механизме оператора ? Rust разделены успешное значение и residual при досрочном выходе?
В цепочке операций функция возвращает Option, из-за чего результат становится вложенным. Как flatten восстанавливает ожидаемую структуру значения?
Какой метод Result позволяет выполнить побочный эффект над Err, сохранив исходный результат без преобразования?
Как требование UnwindSafe ограничивает данные, захватываемые замыканием для catch_unwind?
Требуется преобразовать успешное значение Result, сохранив ошибку без её обработки. Какой метод выбрать и почему?
При переводе Result в Option методом ok какое содержимое становится недоступным вызывающему коду?
Показано 41–60 из 348