Struct ckb_types::H256[]

pub struct H256(pub [u8; 32]);
Expand description

The 32-byte fixed-length binary data.

The name comes from the number of bits in the data.

In JSONRPC, it is encoded as a 0x-prefixed hex string.

Implementations

impl H256

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

Converts Self to a byte slice.

pub fn from_slice(input: &[u8]) -> Result<H256, FromSliceError>

To convert the byte slice back into Self.

impl H256

pub fn from_trimmed_str(input: &str) -> Result<H256, FromStrError>

To convert a trimmed hexadecimal string into Self.

If the beginning of a hexadecimal string are one or more zeros, then these zeros should be omitted.

There should be only one zero at the beginning of a hexadecimal string at most.

For example, if x is H16 (a 16 bits binary data):

  • when x = [0, 0], the trimmed hexadecimal string should be “0” or “”.
  • when x = [0, 1], the trimmed hexadecimal string should be “1”.
  • when x = [1, 0], the trimmed hexadecimal string should be “100”.
use ckb_fixed_hash_core::H256 as Hash;
const BYTES_SIZE: usize = 32;

let mut inner = [0u8; BYTES_SIZE];

{
    let actual = Hash(inner.clone());
    let expected1 = Hash::from_trimmed_str("").unwrap();
    let expected2 = Hash::from_trimmed_str("0").unwrap();
    assert_eq!(actual, expected1);
    assert_eq!(actual, expected2);
}

{
    inner[BYTES_SIZE - 1] = 1;
    let actual = Hash(inner);
    let expected = Hash::from_trimmed_str("1").unwrap();
    assert_eq!(actual, expected);
}

{
    assert!(Hash::from_trimmed_str("00").is_err());
    assert!(Hash::from_trimmed_str("000").is_err());
    assert!(Hash::from_trimmed_str("0000").is_err());
    assert!(Hash::from_trimmed_str("01").is_err());
    assert!(Hash::from_trimmed_str("001").is_err());
    assert!(Hash::from_trimmed_str("0001").is_err());
}

Trait Implementations

impl AsMut<[u8]> for H256

pub fn as_mut(&mut self) -> &mut [u8]

Performs the conversion.

impl AsRef<[u8]> for H256

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

Performs the conversion.

impl Clone for H256

pub fn clone(&self) -> H256

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for H256

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

Formats the value using the given formatter. Read more

impl Default for H256

pub fn default() -> H256

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

impl<'de> Deserialize<'de> for H256

pub fn deserialize<D>(
    deserializer: D
) -> Result<H256, <D as Deserializer<'de>>::Error> where
    D: Deserializer<'de>, 

Deserialize this value from the given Serde deserializer. Read more

impl Display for H256

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

Formats the value using the given formatter. Read more

impl From<[u8; 32]> for H256

pub fn from(bytes: [u8; 32]) -> H256

Performs the conversion.

impl FromStr for H256

type Err = FromStrError

The associated error which can be returned from parsing.

pub fn from_str(input: &str) -> Result<H256, <H256 as FromStr>::Err>

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

impl Hash for H256

pub fn hash<H>(&self, state: &mut H) where
    H: Hasher

Feeds this value into the given Hasher. Read more

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

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

impl LowerHex for H256

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

Formats the value using the given formatter.

impl Ord for H256

pub fn cmp(&self, other: &H256) -> Ordering

This method returns an Ordering between self and other. Read more

#[must_use]
fn max(self, other: Self) -> Self
1.21.0[src]

Compares and returns the maximum of two values. Read more

#[must_use]
fn min(self, other: Self) -> Self
1.21.0[src]

Compares and returns the minimum of two values. Read more

#[must_use]
fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]

Restrict a value to a certain interval. Read more

impl Pack<Byte32> for H256[src]

fn pack(&self) -> Byte32[src]

Packs a rust type into binary data.

impl PartialEq<H256> for H256

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

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl PartialOrd<H256> for H256

pub fn partial_cmp(&self, other: &H256) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more

#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than (for self and other) and is used by the < operator. Read more

#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Serialize for H256

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

Serialize this value into the given Serde serializer. Read more

impl<'r> Unpack<H256> for Byte32Reader<'r>[src]

fn unpack(&self) -> H256[src]

Unpack binary data into rust types.

impl Unpack<H256> for Byte32[src]

fn unpack(&self) -> H256[src]

Unpack binary data into rust types.

impl Eq for H256

Auto Trait Implementations

impl RefUnwindSafe for H256

impl Send for H256

impl Sync for H256

impl Unpin for H256

impl UnwindSafe for H256

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> ToString for T where
    T: Display + ?Sized
[src]

pub default fn to_string(&self) -> String[src]

Converts the given value to a String. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

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

pub fn vzip(self) -> V

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