Skip to main content

DetachedOperation

Struct DetachedOperation 

Source
pub struct DetachedOperation { /* private fields */ }
Expand description

Durable facts of one committed clean detach, as recorded by the shell.

The atomic detach transaction (terminal append, floor transition, cell replacement, and binding release) is summarized by its committed Detached(CleanDeregister) terminal plus the replayable attempt token retained inside the committed replay cell.

Implementations§

Source§

impl DetachedOperation

Source

pub fn new<EF, V>(transition: &CommittedDetachTransition<EF, V>) -> Option<Self>

Creates the detach event body from the whole atomic detach transition.

The producer consumes the crate’s own sealed commit (CommittedDetachTransition has no public constructor, so only super::commit_detach and super::complete_pending_detach mint it), exactly like the other five producers: the recorded terminal and the replay cell supplying the recorded attempt token were born in one detach commit with full conversation context, so pairing a terminal with a cell from another detach — or another conversation whose participant, epoch, and delivery-sequence fields collide — is unrepresentable:

use liminal_protocol::lifecycle::{CommittedDetachTransition, DetachedOperation};

fn mispair(
    conversation_a: &CommittedDetachTransition<(), [u8; 32]>,
    conversation_b: &CommittedDetachTransition<(), [u8; 32]>,
) -> Option<DetachedOperation> {
    DetachedOperation::new(conversation_a.terminal(), conversation_b.cell())
}

A standalone terminal cannot be presented either, so a supersession terminal still belongs only to the attach event that committed it:

use liminal_protocol::lifecycle::{CommittedDetachedTerminal, DetachedOperation};

fn relabel(terminal: &CommittedDetachedTerminal) -> Option<DetachedOperation> {
    DetachedOperation::new(terminal)
}

Returns None unless the transition’s terminal cause is CleanDeregister and its cell names that terminal’s exact participant, ended binding epoch, and committed delivery sequence — re-validation of invariants the detach commit constructors already guarantee, surfaced by the aggregate commit as a typed pairing fault rather than a recorded lie.

Source

pub const fn detach_attempt_token(self) -> DetachAttemptToken

Returns the stable detach attempt token retained for replay.

Source

pub const fn conversation_id(self) -> ConversationId

Returns the conversation whose participant detached.

Source

pub const fn participant_id(self) -> ParticipantId

Returns the permanent participant identifier/index.

Source

pub const fn committed_binding_epoch(self) -> BindingEpoch

Returns the binding epoch ended by the detach.

Source

pub const fn detached_transaction_order(self) -> TransactionOrder

Returns the terminal’s immutable transaction-order major.

Source

pub const fn detached_delivery_seq(self) -> DeliverySeq

Returns the committed Detached record’s delivery sequence.

Trait Implementations§

Source§

impl Clone for DetachedOperation

Source§

fn clone(&self) -> DetachedOperation

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 DetachedOperation

Source§

impl Debug for DetachedOperation

Source§

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

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

impl Eq for DetachedOperation

Source§

impl PartialEq for DetachedOperation

Source§

fn eq(&self, other: &DetachedOperation) -> 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 DetachedOperation

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.