Struct ckb_fixed_hash_core::H512
source · pub struct H512(pub [u8; 64]);
Expand description
The 64-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.
Tuple Fields§
§0: [u8; 64]
Implementations§
source§impl H512
impl H512
sourcepub fn from_slice(input: &[u8]) -> Result<Self, FromSliceError>
pub fn from_slice(input: &[u8]) -> Result<Self, FromSliceError>
To convert the byte slice back into Self
.
source§impl H512
impl H512
sourcepub fn from_trimmed_str(input: &str) -> Result<Self, FromStrError>
pub fn from_trimmed_str(input: &str) -> Result<Self, 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::H512 as Hash;
const BYTES_SIZE: usize = 64;
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§
source§impl<'de> Deserialize<'de> for H512
impl<'de> Deserialize<'de> for H512
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl Ord for H512
impl Ord for H512
source§impl PartialEq for H512
impl PartialEq for H512
source§impl PartialOrd for H512
impl PartialOrd for H512
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moreimpl Eq for H512
Auto Trait Implementations§
impl RefUnwindSafe for H512
impl Send for H512
impl Sync for H512
impl Unpin for H512
impl UnwindSafe for H512
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more