resiter::ok_or_else

Trait ResultOptionExt

Source
pub trait ResultOptionExt<T, E, F>
where T: Sized, E: Sized, F: FnOnce() -> E,
{ // Required method fn inner_ok_or_else(self, f: F) -> Result<T, E>; }
Expand description

Extension trait for doing Result<Option<T>, E> -> Result<T, E>

Required Methods§

Source

fn inner_ok_or_else(self, f: F) -> Result<T, E>

Apply Option::or_else on option values in wrapped in Result::Ok.

use resiter::ok_or_else::ResultOptionExt;

let res = Ok(Some(1));
let unwrapped = res.inner_ok_or_else(|| "else this");
assert_eq!(unwrapped, Ok(1));

If the value is None the result will fail with the provided error.

use resiter::ok_or_else::ResultOptionExt;

let res = Ok(None);
let unwrapped: Result<i32, &'static str> = res.inner_ok_or_else(|| "else this");
assert_eq!(unwrapped, Err("else this"));

Implementations on Foreign Types§

Source§

impl<T, E, F> ResultOptionExt<T, E, F> for Result<Option<T>, E>
where T: Sized, E: Sized, F: FnOnce() -> E,

Source§

fn inner_ok_or_else(self, f: F) -> Result<T, E>

Implementors§