Skip to main content

AppendOutcome

Enum AppendOutcome 

Source
pub enum AppendOutcome {
    Appended {
        version: StreamVersion,
        records: Vec<AuditRecord>,
        first_position: GlobalPosition,
    },
    Conflict {
        expected: StreamVersion,
        actual: StreamVersion,
    },
}
Expand description

What an event store did with a batch of facts.

A conflict is an outcome rather than an error: another caller got there first, nothing landed, and the right response is to reload and decide again — not to give up.

Variants§

§

Appended

Every fact was sealed and landed. version is the stream’s new head, records the sealed facts in order, and first_position where the first of them sits in the global order; the rest follow it contiguously.

Fields

§records: Vec<AuditRecord>
§first_position: GlobalPosition
§

Conflict

The stream was not at the version the caller decided against. Nothing was written.

Fields

§expected: StreamVersion

Implementations§

Source§

impl AppendOutcome

Source

pub fn is_conflict(&self) -> bool

Source

pub fn records(&self) -> &[AuditRecord]

The records that landed — none for a conflict.

Source

pub fn appended_version(&self) -> Option<StreamVersion>

The stream’s head after the append, if it landed.

Source

pub fn positioned(&self) -> Vec<PositionedRecord>

The records that landed, each with its place in the global order — none for a conflict.

Derived rather than stored: the positions of one append are contiguous from first_position by contract, so keeping one per record would be the same fact written n times and n chances for an adapter to write it differently. Whoever needs the pair — a projection being told what was just sealed, a consumer placing a cursor — gets it the same way here.

Trait Implementations§

Source§

impl Clone for AppendOutcome

Source§

fn clone(&self) -> Self

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 Debug for AppendOutcome

Source§

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

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

impl Eq for AppendOutcome

Source§

impl PartialEq for AppendOutcome

Source§

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

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> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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.