Skip to main content

ReasoningLedger

Struct ReasoningLedger 

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

Validated append-only reasoning participant content.

Implementations§

Source§

impl ReasoningLedger

Source

pub fn records(&self) -> &[ReasoningRecord]

Borrow validated records in canonical order.

ⓘ
use graphforge_knowledge::ReasoningLedger;
let mut ledger = ReasoningLedger::default();
ledger.records.clear();
Source

pub fn into_records(self) -> Vec<ReasoningRecord>

Consume this ledger and return its validated records in canonical order.

Source

pub fn new(records: Vec<ReasoningRecord>) -> Result<Self, KnowledgeError>

Validate, sort, and construct one complete participant.

Source

pub fn merge(&self, staged: &Self) -> Result<Self, KnowledgeError>

Merge staged append-only records with idempotent exact replay.

Both inputs are validated ledgers and the row vector is private, so existing records cannot be mutated after validation. The only new whole-ledger condition is the combined row limit. A staged row that refers to a base-only predecessor is rejected while constructing the staged ledger because its predecessor is missing there. If the staged ledger includes that base row to satisfy its own chain, merge accepts it only as exact replay. Base rows cannot point to newly appended rows, since the base ledger was already validated without those identities. Therefore a cycle spanning base and staged rows is unreachable, while any identity reuse is exact replay or a conflict.

Source

pub fn append(&self, record: ReasoningRecord) -> Result<Self, KnowledgeError>

Append one record to this validated ledger without revalidating stored rows.

The incoming record is validated because its fields are public. The existing ledger is immutable and already validated, so only combined identity, predecessor, assertion, cycle, and row-limit conditions are checked against its trusted records.

Source

pub fn record_fingerprint( &self, reasoning_uuid: Uuid, ) -> Result<[u8; 32], KnowledgeError>

Canonical fingerprint over the exact immutable record.

Source

pub fn current_for(&self, assertion_uuid: Uuid) -> Option<&ReasoningRecord>

Resolve the current leaf without mutating or hiding branch history.

Source

pub fn batch(&self) -> Result<RecordBatch, KnowledgeError>

Build the authoritative Arrow batch.

Source

pub fn from_batches(batches: &[RecordBatch]) -> Result<Self, KnowledgeError>

Decode authoritative batches and revalidate the complete ledger.

Trait Implementations§

Source§

impl Clone for ReasoningLedger

Source§

fn clone(&self) -> Self

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 ReasoningLedger

Source§

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

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

impl Default for ReasoningLedger

Source§

fn default() -> Self

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

impl Eq for ReasoningLedger

Source§

impl PartialEq for ReasoningLedger

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ReasoningLedger

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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

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, 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.