Skip to main content

ProvenanceLog

Struct ProvenanceLog 

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

Append-only writer with in-process serialization.

Implementations§

Source§

impl ProvenanceLog

Source

pub fn open( path: impl Into<Utf8PathBuf>, session_id: String, ) -> Result<Self, LogError>

Open or create the log at path, stamping every row with session_id.

session_id MUST be a 26-char ULID generated once per process invocation by the caller. Re-opening the log within the same process reuses the same session_id; re-opening in a new process gets a new one. This crate intentionally does NOT generate the ULID itself — callers are responsible for creating one (e.g. via the ulid crate already present in the workspace) and threading it through.

If the file exists, scan it once to recover the last ts_seq and this_hash. If the file is missing or empty, the first row will use prev_hash = "GENESIS" and ts_seq = 1.

§Errors

Returns LogError::Io for I/O failures or if any line fails to parse as a LogRow (synthetic message: "corrupted log at line N: …"). The writer never silently truncates a corrupt log.

Returns LogError::NotARegularFile if path exists but is not a regular file (e.g. a directory).

Source

pub fn append(&self, input: RowInput<'_>) -> Result<u64, LogError>

Append a row. Computes prev_hash, ts_seq, ts, session_id, and this_hash; the caller only supplies the semantic fields via RowInput.

Returns the assigned ts_seq on success.

§Errors

Returns LogError on serialization, I/O, or fsync failure. Callers MUST treat this as fail-closed and abort the surrounding fetch.

Source

pub fn path(&self) -> &Utf8Path

Returns the path the log was opened at. Useful for tests and audit tooling.

Source

pub fn session_id(&self) -> &str

Returns the session id stamped into every row written through this writer.

Trait Implementations§

Source§

impl Debug for ProvenanceLog

Source§

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

Formats the value using the given formatter. Read more

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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