Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад

В чём разница между .unwrap() и .expect() в Rust?

Этот вопрос проверяет знание способов работы с типами 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() удобны для прототипирования, но в продакшн-коде лучше использовать более надёжные подходы к обработке ошибок.ф

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Rust

Ключевые слова

#unwrap

#expect

#panic

#option

#result

Подпишись на Rust Developer в телеграм