Сравните unwrap_or и unwrap_or_else для Option: когда вычисляется значение по умолчанию и как это влияет на поведение программы?
База 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
Разберите механизм: что происходит с локальными значениями при раскрутке стека после panic в Rust?
Как map_err преобразует ошибку в Result, не изменяя успешное значение?
При сборке итератора значений типа Result в Result с коллекцией успешных значений на каком элементе прекращается обработка?
Обязательна ли реализация std::error::Error для типа ошибки E, чтобы Result<T, E> работал с оператором ?
Что происходит с владением успешного значения при применении оператора ? к Result?
Посмотрите на функцию с ранним возвратом через ?. В каком порядке будут напечатаны строки и почему?
Как неполное сопоставление с Result влияет на компиляцию Rust?
В функции, возвращающей Option, что делает оператор ? при получении None?
При последовательной обработке данных, когда для Result нужен and_then вместо map?
При возникновении второй panic во время раскрутки стека почему Rust аварийно завершает процесс вместо передачи ошибки вызывающему коду?
Когда оператор ? получает ошибку типа, отличного от типа ошибки возвращающей функции, как Rust определяет преобразование?
Где проходит граница между возвратом Result и вызовом panic при ошибке в Rust?
Представьте, что функция должна изолировать аварийное завершение замыкаемой операции. Какой результат выведет программа и за счёт какого механизма выполнение продолжается после panic!?
use std::panic::catch_unwind;
fn main() {
let result = catch_unwind(|| {
panic!("сбой");
});
println!("{}", result.is_err());
println!("продолжение");
}
В чём смысл преобразования Option<Result<T, E>> в Result<Option<T>, E> методом transpose?
При добавлении контекста к ошибке библиотеки какой дизайн позволяет сохранить исходную причину для вызывающего кода?
Как выбор типа ошибки в Result влияет на возможность вызывающего кода различать причины сбоя?
Разберите последствия вызова функции для разных входных данных: что произойдёт при передаче строки "http" и почему возвращаемый тип не защищает от аварийного завершения?
fn parse_port(text: &str) -> Result<u16, String> {
let port = text.parse::<u16>().unwrap();
Ok(port)
}
fn main() {
println!("{:?}", parse_port("8080"));
println!("{:?}", parse_port("http"));
}
В каких случаях отсутствие значения следует представить через Option, а не через Result?
Что именно делает оператор ? с результатом Err внутри функции, возвращающей Result?
Показано 81–100 из 348