Метод unwrap
Метод unwrap извлекает значение из перечислений
Result и Option. Если контейнер содержит
значение Ok или Some, метод возвращает
это значение. Если же контейнер содержит ошибку
Err или пустое значение None, метод
вызывает панику с соответствующим сообщением.
Параметров метод не принимает.
Синтаксис
result.unwrap()
option.unwrap()
Пример
Давайте извлечём значение из Result, содержащего
успешный результат:
fn main()
{
let res: Result<i32, &str> = Ok(42);
let value = res.unwrap();
println!("{}", value);
}
Результат выполнения кода:
42
Пример
Давайте извлечём значение из Option, содержащего
некоторое значение:
fn main()
{
let opt: Option<&str> = Some("abcde");
let value = opt.unwrap();
println!("{}", value);
}
Результат выполнения кода:
"abcde"
Пример
Если Result содержит ошибку, метод unwrap
вызовет панику:
fn main()
{
let res: Result<i32, &str> = Err("something went wrong");
let value = res.unwrap();
println!("{}", value);
}
Результат выполнения кода:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "something went wrong"'
Смотрите также
-
метод
expect,
который извлекает значение с пользовательским сообщением об ошибке -
метод
unwrap_or,
который возвращает значение по умолчанию вместо паники -
метод
unwrap_or_else,
который вычисляет значение по умолчанию через замыкание -
метод
unwrap_err,
который извлекает ошибку из Result, паникуя при Ok