Skip to main content

EventHash

Struct EventHash 

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

A 20-byte hash identifying a KEL event.

Serializes as a 40-character lowercase hex string, matching the encoding used by git2::Oid::to_string(). This ensures JSON payloads, API schemas, and cache files remain compatible when migrating from git2::Oid.

§Args

The inner [u8; 20] represents the raw SHA-1 bytes.

§Usage

use auths_core::witness::EventHash;

// From raw bytes
let bytes = [0u8; 20];
let hash = EventHash::from_bytes(bytes);
assert_eq!(hash.as_bytes(), &bytes);

// From hex string
let hash = EventHash::from_hex("0000000000000000000000000000000000000001").unwrap();
assert_eq!(hash.to_hex(), "0000000000000000000000000000000000000001");

// Serde: serializes as hex string, not integer array
let json = serde_json::to_string(&hash).unwrap();
assert_eq!(json, r#""0000000000000000000000000000000000000001""#);

Implementations§

Source§

impl EventHash

Source

pub const fn from_bytes(bytes: [u8; 20]) -> Self

Create an EventHash from raw bytes.

Source

pub fn as_bytes(&self) -> &[u8; 20]

Get the raw bytes of this hash.

Source

pub fn from_hex(s: &str) -> Option<Self>

Create an EventHash from a hex string.

Returns None if the string is not exactly 40 hex characters.

§Example
use auths_core::witness::EventHash;

let hash = EventHash::from_hex("0123456789abcdef0123456789abcdef01234567");
assert!(hash.is_some());

// Wrong length
assert!(EventHash::from_hex("0123").is_none());

// Invalid characters
assert!(EventHash::from_hex("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz").is_none());
Source

pub fn to_hex(&self) -> String

Convert this hash to a lowercase hex string.

§Example
use auths_core::witness::EventHash;

let hash = EventHash::from_bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
                                  10, 11, 12, 13, 14, 15, 16, 17, 18, 19]);
assert_eq!(hash.to_hex(), "000102030405060708090a0b0c0d0e0f10111213");

Trait Implementations§

Source§

impl Clone for EventHash

Source§

fn clone(&self) -> EventHash

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 EventHash

Source§

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

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

impl<'de> Deserialize<'de> for EventHash

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for EventHash

Source§

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

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

impl FromStr for EventHash

Source§

type Err = EventHashParseError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for EventHash

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for EventHash

Source§

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

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for EventHash

Source§

impl Eq for EventHash

Source§

impl StructuralPartialEq for EventHash

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,