Этот вопрос проверяет знание способов работы с типами Option и Result в Rust и их особенностей.
Метод .unwrap() вызывает панику, если значение отсутствует, отображая стандартное сообщение об ошибке. Метод .expect() делает то же самое, но позволяет указать собственное сообщение об ошибке.
В Rust методы .unwrap() и .expect() используются для работы с типами Option и Result, когда вы уверены, что значение присутствует. Однако их поведение при ошибке отличается.
1. .unwrap():
Вызывает панику с дефолтным сообщением.
Полезен для быстрых тестов, но не информативен при ошибках.
let value: Option<i32> = None;
let result = value.unwrap(); // Паника: "called `Option::unwrap()` on a `None` value"2. .expect():
Делает то же, что и .unwrap(), но позволяет добавить пользовательское сообщение об ошибке.
Это упрощает отладку.
let value: Option<i32> = None;
let result = value.expect("Value is missing!"); // Паника: "Value is missing!"Рекомендации:
Используйте .expect() вместо .unwrap(), чтобы сообщения об ошибках были понятными.
Для обработки ошибок рекомендуется использовать методы match или if let.
Пример безопасной обработки:
let value: Option<i32> = None;
if let Some(val) = value {
println!("Value: {}", val);
} else {
println!("Value is missing!");
}.unwrap() и .expect() удобны для прототипирования, но в продакшн-коде лучше использовать более надёжные подходы к обработке ошибок.ф