Skip to main content

FrozenPrefix

Struct FrozenPrefix 

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

The assembled prefix: city, building, resident, run — in that order, enforced at the only constructor.

Implementations§

Source§

impl FrozenPrefix

Source

pub fn assemble( city: FrozenSegment, building: FrozenSegment, resident: FrozenSegment, run: FrozenSegment, ) -> Result<FrozenPrefix, AxError>

Slot order is the type: a segment in the wrong position is E_INVALID_ARGS (fail-closed, never silently reordered).

Source

pub fn system_blocks(&self) -> Result<Vec<SystemBlock>, AxError>

The wire form of the frozen prefix: four system blocks, each carrying the edge breakpoint BreakpointPlan::marks_edge gives its slot. Segments must be UTF-8 (build_prefix guarantees it; hand-built test prefixes must comply to reach the wire).

Source

pub fn segments(&self) -> [&FrozenSegment; 4]

Source

pub fn segment_hashes(&self) -> [B3Hash; 4]

Source

pub fn verified_segment_hashes(&self) -> Result<[B3Hash; 4], AxError>

The four segment hashes, recomputed from the bytes that will be sent and checked against the hashes recorded at assembly.

segment_hashes answers with the values fixed at construction, and nothing in the tree compared them against the bytes. A turn that recalculates here cannot send bytes the recorded prefix does not describe.

§Errors

A segment whose bytes no longer hash to what the run froze.

Source

pub fn prompt_payload(&self, plan: &BreakpointPlan) -> Result<Payload, AxError>

The prompt_assembled payload: four rows, each naming its slot, its hash, its length, the documents it was assembled from and what it left out, and the breakpoints plan puts in the request.

One branch, not two. The source rows are read back by an offline rebuild (A15, C16) and by the page that shows a person what their agent was told, and they come from the segments themselves — so a prefix assembled at the city’s desk records the same rows under the same keys as one built from a plan, and a segment made of no documents says so with an empty list.

§Errors

A segment longer than u64 can hold, and a payload the Ledger refuses.

Trait Implementations§

Source§

impl Clone for FrozenPrefix

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 FrozenPrefix

Source§

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

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

impl Eq for FrozenPrefix

Source§

impl PartialEq for FrozenPrefix

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 FrozenPrefix

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> 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.