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§