Skip to main content

EffectLog

Struct EffectLog 

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

Represents an encapsulated, timestamped log of causal evaluation events.

This struct provides a high-level API for logging and ensures that all log entries are automatically timestamped. It hides the internal storage details to provide a clean and robust interface. An append-only audit log for causal operations.

EffectLog maintains a chronological record of all significant events, computations, and interventions that occur during a causal process. This is crucial for:

  • Explainability: Tracing back why a certain result was reached.
  • Auditability: Providing a tamper-evident record of decisions suitable for compliance.
  • Debugging: Understanding the flow of complex graphs.

Implementations§

Source§

impl EffectLog

Source

pub fn new() -> EffectLog

Creates a new, empty log.

Source

pub fn with_capacity(capacity: usize) -> EffectLog

Creates a new, empty log with a specified capacity.

Source

pub fn eq_with_timestamps(&self, other: &EffectLog) -> bool

Strict equality that also requires entry timestamps to match.

The counterpart to the timestamp-agnostic PartialEq impl: returns true only when the two logs have the same messages and the same timestamps, in the same order. Use this when the temporal record is the subject of the comparison (e.g. auditing that two runs produced identically-timed entries); use == for ordinary value equality.

Trait Implementations§

Source§

impl Clone for EffectLog

Source§

fn clone(&self) -> EffectLog

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 EffectLog

Source§

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

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

impl Default for EffectLog

Source§

fn default() -> EffectLog

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

impl Display for EffectLog

Source§

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

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

impl Eq for EffectLog

Source§

impl From<&str> for EffectLog

Provides a clean way to create a log with a single initial entry from a string slice. e.g., let log: CausalEffectLog = "Initial message".into();

Source§

fn from(message: &str) -> EffectLog

Converts to this type from the input type.
Source§

impl From<String> for EffectLog

Provides a clean way to create a log with a single initial entry. e.g., let log: CausalEffectLog = "Initial message".to_string().into();

Source§

fn from(message: String) -> EffectLog

Converts to this type from the input type.
Source§

impl LogAddEntry for EffectLog

Source§

fn add_entry(&mut self, message: &str)

Adds a new timestamped entry to the log.

§Arguments
  • message - The log message string slice.
Source§

impl LogAppend for EffectLog

Source§

fn append(&mut self, other: &mut EffectLog)

Merges another log’s entries into this one. The entries from the other log are moved, and the other log will be empty after this operation.

Source§

impl LogEffect for EffectLog

Source§

impl LogSize for EffectLog

Source§

fn is_empty(&self) -> bool

Returns true if the log contains no entries.

Source§

fn len(&self) -> usize

Returns the number of entries in the log.

Source§

impl PartialEq for EffectLog

Value equality of an EffectLog is its message sequence, ignoring entry timestamps.

Each entry is timestamped with SystemTime::now() at add_entry time (or 0 under no_std). Those timestamps are wall-clock metadata: two logically identical logs built microseconds apart would otherwise never compare equal, which makes the derived structural == non-deterministic and breaks value comparison of any CausalEffectPropagationProcess carrying a non-empty log. Comparing by message content and order keeps == a meaningful, reproducible equivalence. When the timestamps themselves are the subject of comparison, use eq_with_timestamps.

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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.

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> Satisfies<NoConstraint> for T

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.