Метод expect
Метод expect извлекает значение из типа
Result или Option. Если значение
присутствует, метод возвращает его. Если значение
отсутствует или произошла ошибка, метод вызывает
панику с сообщением, которое передаётся параметром.
Параметром метод принимает строку с текстом сообщения
об ошибке.
Метод expect удобно использовать в тех случаях,
когда ошибка не должна возникнуть, и вы хотите сразу
увидеть причину паники в выводе программы.
Синтаксис
result.expect(msg)
option.expect(msg)
Пример
Давайте извлечём значение из Ok с помощью
метода expect:
fn main()
{
let res: Result<i32, &str> = Ok(12345);
let value = res.expect("should be a number");
println!("{}", value);
}
Результат выполнения кода:
12345
Пример
Давайте попробуем извлечь значение из Err
с помощью метода expect. Такой код вызовет
панику:
fn main()
{
let res: Result<i32, &str> = Err("some error");
let value = res.expect("failed to get value");
println!("{}", value);
}
Результат выполнения кода:
thread 'main' panicked at 'failed to get value: "some error"'
Пример
Давайте извлечём значение из Some с помощью
метода expect:
fn main()
{
let res: Option<&str> = Some("abcde");
let value = res.expect("value is missing");
println!("{}", value);
}
Результат выполнения кода:
"abcde"
Пример
Давайте попробуем извлечь значение из None
с помощью метода expect. Такой код вызовет
панику:
fn main()
{
let res: Option<&str> = None;
let value = res.expect("value is missing");
println!("{}", value);
}
Результат выполнения кода:
thread 'main' panicked at 'value is missing'
Смотрите также
-
метод
unwrap,
который извлекает значение или вызывает панику без сообщения -
метод
unwrap_or,
который возвращает значение по умолчанию при ошибке -
метод
unwrap_or_else,
который вычисляет значение по умолчанию при ошибке -
метод
unwrap_err,
который извлекает ошибку из Result или вызывает панику