Skip to main content

CanonicalBytes

Struct CanonicalBytes 

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

Newtype wrapper over canonical JCS output bytes.

Construction is restricted to this crate — callers obtain a CanonicalBytes only by routing through canonical_bytes_from_slice (or the wrappers in vertrule-core::determinism). The type exists so digest, signature, and receipt APIs can statically require “bytes that came out of JCS” rather than accepting any &[u8]. Every coercion back to &[u8] goes through the explicit Self::as_slice method — there is no AsRef<[u8]> or Deref impl, so escapes are greppable.

The Debug impl deliberately shows the byte length and not the bytes. Dumping raw canonical JSON into a log is a common way to accidentally leak receipt contents; callers that want the bytes must ask for them.

Implementations§

Source§

impl CanonicalBytes

Source

pub fn as_slice(&self) -> &[u8]

Explicit escape hatch to a byte slice. Named so reviewers can grep for the boundary where canonical-bytes discipline is dropped (e.g., feeding wire bytes to blake3::hash).

Source

pub fn len(&self) -> usize

Length in bytes.

Source

pub fn is_empty(&self) -> bool

True when the canonical output is empty (only possible for an empty input in degenerate paths; not reachable from the primary API).

Source

pub fn into_vec(self) -> Vec<u8>

Consume the wrapper and return the underlying byte buffer. Use at wire boundaries where ownership is transferred (file write, network send). Not an implicit coercion.

Trait Implementations§

Source§

impl Clone for CanonicalBytes

Source§

fn clone(&self) -> CanonicalBytes

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CanonicalBytes

Source§

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

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

impl PartialEq for CanonicalBytes

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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.
Source§

impl Eq for CanonicalBytes

Source§

impl StructuralPartialEq for CanonicalBytes

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