pub struct H520(pub [u8; 65]);
Expand description
The 65-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; 65]
Implementations§
Source§impl H520
impl H520
Sourcepub fn from_slice(input: &[u8]) -> Result<H520, FromSliceError>
pub fn from_slice(input: &[u8]) -> Result<H520, FromSliceError>
To convert the byte slice back into Self
.
Source§impl H520
impl H520
Sourcepub fn from_trimmed_str(input: &str) -> Result<H520, FromStrError>
pub fn from_trimmed_str(input: &str) -> Result<H520, 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::H520 as Hash;
const BYTES_SIZE: usize = 65;
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 H520
impl<'de> Deserialize<'de> for H520
Source§fn deserialize<D>(
deserializer: D,
) -> Result<H520, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<H520, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Ord for H520
impl Ord for H520
Source§impl PartialOrd for H520
impl PartialOrd for H520
Source§impl Serialize for H520
impl Serialize for H520
Source§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
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 Eq for H520
Auto Trait Implementations§
impl Freeze for H520
impl RefUnwindSafe for H520
impl Send for H520
impl Sync for H520
impl Unpin for H520
impl UnwindSafe for H520
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)