pub trait OptionExt<T>: Sealed {
// Required method
fn ok_or_eyre<M>(self, message: M) -> Result<T>
where M: Debug + Display + Send + Sync + 'static;
}Expand description
Provides the ok_or_eyre method for Option.
This trait is sealed and cannot be implemented for types outside of
eyre.
§Example
use eyre::OptionExt;
let option: Option<()> = None;
let result = option.ok_or_eyre("static str error");
assert_eq!(result.unwrap_err().to_string(), "static str error");§ok_or_eyre vs ok_or_else
If string interpolation is required for the generated report,
use ok_or_else instead,
invoking eyre! to perform string interpolation:
use eyre::eyre;
let option: Option<()> = None;
let result = option.ok_or_else(|| eyre!("{} error", "dynamic"));
assert_eq!(result.unwrap_err().to_string(), "dynamic error");ok_or_eyre incurs no runtime cost, as the error object
is constructed from the provided static argument
only in the None case.
Required Methods§
Sourcefn ok_or_eyre<M>(self, message: M) -> Result<T>
fn ok_or_eyre<M>(self, message: M) -> Result<T>
Transform the Option<T> into a Result<T, E>,
mapping Some(v) to Ok(v)
and None to Report.
ok_or_eyre allows for eyre Report error objects
to be lazily created from static messages in the None case.
For dynamic error messages, use ok_or_else,
invoking eyre! in the closure to perform string interpolation.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.