Skip to main content

StateHash

Struct StateHash 

Source
pub struct StateHash(/* private fields */);
Expand description

An in-progress fingerprint. Absorption is by value and returns the new state, so the order of a digest is written out as an expression and can be read off the page.

Implementations§

Source§

impl StateHash

Source

pub const fn new() -> Self

Source

pub const fn absorb_bytes(self, bytes: &[u8]) -> Self

Absorb raw bytes, in the order given.

Source

pub const fn absorb_u64(self, value: u64) -> Self

Absorb a 64-bit value, little-endian. The byte order is fixed here rather than left to the host so a digest means the same thing on every target.

Source

pub const fn absorb_u32(self, value: u32) -> Self

Absorb a 32-bit value, little-endian.

Source

pub const fn absorb_f32_bits(self, value: f32) -> Self

Absorb a float by its bit pattern — never by its value, which has two zeros and no equality for NaN.

Source

pub const fn absorb_plan(self, plan: &FramePlan) -> Self

The canonical per-frame absorption order, written once so no consumer invents a second one.

alpha is excluded deliberately: it is a pure function of the remainder and the timestep, both of which are absorbed here, so hashing it would add no information and would make the oracle float-dependent. An unstated exclusion is how a determinism oracle goes quietly vacuous, so it is stated.

The timestep was not absorbed until it was checked. The sentence above was written when this folded four fields, none of them the timestep, so the exclusion it justified rested on a premise that was false: two plans with equal first tick, step count, dropped count and remainder, cut against different timesteps, digested identically and had different alphas. Nothing in the tree could produce that pair, since a loop’s timestep is fixed at construction — which is exactly why it survived. A digest justified by a claim that happens to hold is a digest waiting for the day it stops.

Source

pub const fn finish(self) -> u64

Trait Implementations§

Source§

impl Clone for StateHash

Source§

fn clone(&self) -> StateHash

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 Copy for StateHash

Source§

impl Debug for StateHash

Source§

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

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

impl Default for StateHash

Source§

fn default() -> Self

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

impl Eq for StateHash

Source§

impl PartialEq for StateHash

Source§

fn eq(&self, other: &StateHash) -> 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 StateHash

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