Skip to main content

Stamp

Struct Stamp 

Source
pub struct Stamp {
    pub id: Id,
    pub event: Event,
}
Expand description

An ITC stamp: a pair of (ID tree, Event tree).

The stamp is the fundamental unit of causality tracking in ITC. Each agent holds a stamp; operations like fork, join, and event modify the stamp to track causal history.

Fields§

§id: Id

The identity partition owned by this stamp.

§event: Event

The causal history recorded by this stamp.

Implementations§

Source§

impl Stamp

Source

pub const fn new(id: Id, event: Event) -> Self

Create a new stamp with the given ID and event trees.

Source

pub const fn seed() -> Self

Create the initial seed stamp: owns the full interval with zero events.

This is the starting point for an ITC system. The seed stamp owns the entire [0, 1) interval and has recorded no events.

Source

pub const fn anonymous() -> Self

Create an anonymous stamp: owns nothing, zero events.

An anonymous stamp cannot record events but can receive causality information through join operations.

Source

pub fn is_anonymous(&self) -> bool

Returns true if this stamp owns no interval.

Source

pub fn normalize(self) -> Self

Normalize both the ID and event trees to their minimal representations.

Source§

impl Stamp

Source

pub fn fork(&self) -> (Self, Self)

Split this stamp’s ID interval into two halves.

Used when a new agent forks from an existing one. Returns (left, right) where left and right partition the original interval: left ∪ right = original, left ∩ right = ∅.

Both stamps share the same event tree (causal history at time of fork).

§Panics

Panics if this stamp is anonymous (owns no interval to split).

Source

pub fn join(a: &Self, b: &Self) -> Self

Merge two stamps into one, combining their ID intervals and taking the pointwise maximum of their event trees.

Used when an agent retires and donates its interval back, or when synchronizing causality information between agents.

Source

pub fn event(&mut self)

Record a new event, inflating the event tree.

Called on every event emission. The event counter is monotonically increased at a position owned by this stamp’s ID. Uses the fill-then-grow strategy from the ITC paper for minimal tree growth.

§Panics

Panics if this stamp is anonymous (cannot record events without owning part of the interval).

Source

pub const fn peek(&self) -> &Event

Read the current event tree without incrementing.

Source

pub fn leq(&self, other: &Self) -> bool

Causal dominance: returns true if self happened-before-or-equal other.

This means every event recorded by self is also recorded by other.

Source

pub fn concurrent(&self, other: &Self) -> bool

Returns true if neither stamp causally dominates the other.

Two stamps are concurrent if there exist events in each that the other has not observed.

Source§

impl Stamp

Source

pub fn serialize_compact(&self) -> Vec<u8>

Serialize this stamp using the compact binary ITC format.

Source

pub fn deserialize_compact(input: &[u8]) -> Result<Self, CodecError>

Deserialize a stamp from the compact binary ITC format.

§Errors

Returns CodecError when the input is malformed, truncated, has an unknown format version, or contains trailing data.

Trait Implementations§

Source§

impl Clone for Stamp

Source§

fn clone(&self) -> Stamp

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Stamp

Source§

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

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

impl<'de> Deserialize<'de> for Stamp

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Stamp

Source§

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

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

impl Hash for Stamp

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Stamp

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Stamp

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for Stamp

Source§

impl StructuralPartialEq for Stamp

Auto Trait Implementations§

§

impl Freeze for Stamp

§

impl RefUnwindSafe for Stamp

§

impl Send for Stamp

§

impl Sync for Stamp

§

impl Unpin for Stamp

§

impl UnsafeUnpin for Stamp

§

impl UnwindSafe for Stamp

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.
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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,