Struct esrs::AggregateState

source ·
pub struct AggregateState<S> { /* private fields */ }
Expand description

The internal state for an Aggregate. It contains:

  • an id uniquely representing the aggregate,
  • an incremental sequence number,
  • a lock representing the atomicity of the access to the aggregate,
  • a state defined by the user of this library.

Implementations§

source§

impl<S: Default> AggregateState<S>

source

pub fn new() -> Self

Creates a new instance of an AggregateState with a new unique id.

source

pub fn with_id(id: impl Into<Uuid>) -> Self

Creates a new instance of an AggregateState with the given aggregate id.

This should be used almost exclusively when loading by aggregate id yields nothing, and this becomes the brand new aggregate state for that id.

Other uses are strongly discouraged, since the id could be already existing and a clash might happen when persisting events.

source

pub fn apply_store_events<T, F>( self, store_events: Vec<StoreEvent<T>>, apply_event: F ) -> Self
where F: Fn(S, T) -> S,

Consumes the aggregate state and generates a new one with the events applied to it, as dictated by apply_event.

source

pub const fn id(&self) -> &Uuid

Returns an Uuid representing the aggregate id.

source

pub const fn inner(&self) -> &S

Returns the internal state.

source

pub fn into_inner(self) -> S

Consumes self and extracts the internal state.

source

pub const fn sequence_number(&self) -> &SequenceNumber

Returns the internal sequence number.

source

pub fn next_sequence_number(&mut self) -> SequenceNumber

Computes the internal sequence number incremented by 1.

source

pub fn set_lock(&mut self, guard: EventStoreLockGuard)

Inserts the lock guard into self, replacing any current one.

source

pub fn take_lock(&mut self) -> Option<EventStoreLockGuard>

Extracts the lock from self, leaving nothing behind.

Trait Implementations§

source§

impl<S: Debug> Debug for AggregateState<S>

source§

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

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

impl<S: Default> Default for AggregateState<S>

Default implementation for AggregateState

source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<S> Freeze for AggregateState<S>
where S: Freeze,

§

impl<S> !RefUnwindSafe for AggregateState<S>

§

impl<S> Send for AggregateState<S>
where S: Send,

§

impl<S> Sync for AggregateState<S>
where S: Sync,

§

impl<S> Unpin for AggregateState<S>
where S: Unpin,

§

impl<S> !UnwindSafe for AggregateState<S>

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

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more