Skip to main content

Boundaries

Enum Boundaries 

Source
#[repr(u32)]
pub enum Boundaries { Fuse = 0, Preserve = 1, Seal = 2, Split = 3, }
Expand description

What a stage does to the message boundaries passing through it.

Read once, after tocat_init, out of the low two bits of tocat_boundaries. The host folds these along the chain to answer one question per requiring stage: do that stage’s units survive as far as they have to. Nothing here is consulted on the per-chunk path.

Fuse is the default and the safe answer, because it claims nothing: a stage that has not thought about boundaries cannot be relied on to keep them.

Variants§

§

Fuse = 0

§

Preserve = 1

§

Seal = 2

§

Split = 3

Implementations§

Source§

impl Boundaries

Source

pub const fn from_u32(value: u32) -> Option<Boundaries>

Source

pub const fn as_u32(self) -> u32

Source

pub const fn preserves_messages(self) -> bool

Whether one message arriving still means one message leaving.

True for Preserve and Seal: sealing writes framing into the payload, which changes the bytes of a datagram without changing how many there are. This is what the host warns about on a path whose destination is a datagram endpoint.

Source

pub const fn passes_downstream(self) -> bool

Whether a requirement scanning downwards passes this stage without being settled either way.

Only Preserve does. Seal settles it in favour, the other two against, which is why the scan stops at all three and asks satisfies_downstream which it was.

Source

pub const fn passes_upstream(self) -> bool

Whether a requirement scanning upwards passes this stage without being settled either way.

Seal does, because it emits one unit for every unit it was given; sealing only settles a scan going the other way.

Source

pub const fn satisfies_downstream(self) -> bool

Whether a downstream requirement that reached this stage is met by it, so that nothing below can invalidate it.

Source

pub const fn satisfies_upstream(self) -> bool

Whether an upstream requirement that reached this stage is met by it.

Trait Implementations§

Source§

impl Clone for Boundaries

Source§

fn clone(&self) -> Boundaries

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Boundaries

Source§

impl Debug for Boundaries

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for Boundaries

Source§

fn default() -> Boundaries

Returns the “default value” for a type. Read more
Source§

impl Eq for Boundaries

Source§

impl PartialEq for Boundaries

Source§

fn eq(&self, other: &Boundaries) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Boundaries

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.