pub struct CausalContext { /* private fields */ }Expand description
Context linking an event to its causal predecessors.
Every agent-initiated event MUST include a CausalContext that:
- Links to the parent event that triggered this action
- Links to the root event (human request) that started the chain
- Identifies the session and principal
§Invariants
- INV-CAUSAL-1: If parent_event_id is Some(p), then p.sequence < self.sequence
- INV-CAUSAL-2: root_event_id always points to an event with depth = 0
- INV-CAUSAL-3: depth <= session.max_depth
- INV-CAUSAL-4: Exactly one event per session has depth = 0
Implementations§
Source§impl CausalContext
impl CausalContext
Sourcepub fn builder() -> CausalContextBuilder
pub fn builder() -> CausalContextBuilder
Create a builder for constructing a CausalContext.
Sourcepub fn root(
event_id: EventId,
session_id: SessionId,
principal: PrincipalId,
) -> Self
pub fn root( event_id: EventId, session_id: SessionId, principal: PrincipalId, ) -> Self
Create a root context (depth 0) for a human-initiated event.
This is the starting point of any causal chain.
Sourcepub fn parent_event_id(&self) -> Option<&EventId>
pub fn parent_event_id(&self) -> Option<&EventId>
Get the parent event ID.
Sourcepub fn root_event_id(&self) -> &EventId
pub fn root_event_id(&self) -> &EventId
Get the root event ID.
Sourcepub fn session_id(&self) -> SessionId
pub fn session_id(&self) -> SessionId
Get the session ID.
Sourcepub fn principal(&self) -> &PrincipalId
pub fn principal(&self) -> &PrincipalId
Get the principal.
Sourcepub fn cross_session_ref(&self) -> Option<&CrossSessionReference>
pub fn cross_session_ref(&self) -> Option<&CrossSessionReference>
Get the cross-session reference, if any.
Sourcepub fn validate_against_parent(&self, parent: &CausalContext) -> Result<()>
pub fn validate_against_parent(&self, parent: &CausalContext) -> Result<()>
Validate this context against a parent context.
Ensures INV-CAUSAL-1 and INV-CAUSAL-2 hold.
Trait Implementations§
Source§impl Clone for CausalContext
impl Clone for CausalContext
Source§fn clone(&self) -> CausalContext
fn clone(&self) -> CausalContext
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CausalContext
impl Debug for CausalContext
Source§impl<'de> Deserialize<'de> for CausalContext
impl<'de> Deserialize<'de> for CausalContext
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
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 CausalContext
impl Display for CausalContext
Source§impl PartialEq for CausalContext
impl PartialEq for CausalContext
Source§impl Serialize for CausalContext
impl Serialize for CausalContext
impl Eq for CausalContext
impl StructuralPartialEq for CausalContext
Auto Trait Implementations§
impl Freeze for CausalContext
impl RefUnwindSafe for CausalContext
impl Send for CausalContext
impl Sync for CausalContext
impl Unpin for CausalContext
impl UnwindSafe for CausalContext
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.