#[ cfg( feature = "enabled" ) ]
pub mod assert;
#[ cfg( feature = "enabled" ) ]
#[ cfg( feature = "error_typed" ) ]
pub mod typed;
#[ cfg( feature = "enabled" ) ]
#[ cfg( feature = "error_untyped" ) ]
pub mod untyped;
mod private
{
pub use core ::error ::Error as ErrorTrait;
pub trait ErrWith< ReportErr, ReportOk, E > {
fn err_with< F >(self, f: F) -> core ::result ::Result< ReportOk, (ReportErr, E) >
where
F: FnOnce() -> ReportErr;
fn err_with_report(self, report: &ReportErr) -> core ::result ::Result< ReportOk, (ReportErr, E) >
where
ReportErr: Clone;
}
impl< ReportErr, ReportOk, E, IntoError > ErrWith< ReportErr, ReportOk, E > for core ::result ::Result< ReportOk, IntoError >
where
IntoError: Into< E >,
{
#[ inline ]
fn err_with< F >(self, f: F) -> core ::result ::Result< ReportOk, (ReportErr, E) >
where
F: FnOnce() -> ReportErr,
{
self.map_err(|error| (f(), error.into()))
}
#[ inline( always ) ]
fn err_with_report(self, report: &ReportErr) -> core ::result ::Result< ReportOk, (ReportErr, E) >
where
ReportErr: Clone,
Self: Sized,
{
self.map_err(|error| (report.clone(), error.into()))
}
}
pub type ResultWithReport< Report, Error > = Result< Report, (Report, Error) >;
}
#[ cfg( feature = "enabled" ) ]
pub use private :: { ErrWith, ResultWithReport, ErrorTrait };
#[ cfg( feature = "enabled" ) ]
pub use assert :: *;