Skip to main content

Carrier

Trait Carrier 

Source
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§

Source

type Repr: Repr<Rejected = Self::Rejected, Lanes = Self::Lanes>

The built-in this carrier converts to and from, by value.

Required Methods§

Source

fn from_repr(r: Self::Repr) -> Self

Source

fn into_repr(self) -> Self::Repr

Source

fn lanes(&self) -> LaneRef<'_, Self::Rejected>

A borrowed view of the current lane.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§