pub trait Carrier:
Sized
+ Error
+ Send
+ Sync
+ 'static
+ IntoLanes<Kind = Carrier, Shape = CarrierShape> {
type Repr: Repr<Rejected = Self::Rejected, Lanes = Self::Lanes>;
// Required methods
fn from_repr(r: Self::Repr) -> Self;
fn into_repr(self) -> Self::Repr;
fn lanes(&self) -> LaneRef<'_, Self::Rejected>;
}Expand description
A crate-local enum that stands in for Fault<L> / Fail<R, L>.
Implemented by #[derive(errlanes::Carrier)] on a lane enum; do not
implement it by hand.
Generic machinery (retry, record, #[errlanes::instrument]) is written
against Laned, which every carrier whose profile is
retryable implements. This trait is for code that needs to move a carrier
to or from its built-in.
use errlanes::{Carrier, Fault, lanes};
#[derive(Debug, errlanes::Carrier)]
pub enum HostFault {
Transient(errlanes::Transient),
Fatal(errlanes::Fatal),
}
fn to_builtin<C: Carrier>(c: C) -> C::Repr {
c.into_repr()
}
let fault: Fault<lanes!(Transient, Fatal)> =
to_builtin(HostFault::Fatal(errlanes::Fatal::invariant("boom")));
assert!(fault.is_fatal());Required Associated Types§
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".