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.