ckb_fixed_hash_core/
std_convert.rs

1use crate::{H160, H256, H512, H520};
2
3macro_rules! impl_std_convert {
4    ($name:ident, $bytes_size:expr) => {
5        impl ::std::convert::AsRef<[u8]> for $name {
6            #[inline]
7            fn as_ref(&self) -> &[u8] {
8                &self.0[..]
9            }
10        }
11        impl ::std::convert::AsMut<[u8]> for $name {
12            #[inline]
13            fn as_mut(&mut self) -> &mut [u8] {
14                &mut self.0[..]
15            }
16        }
17        impl ::std::convert::From<[u8; $bytes_size]> for $name {
18            #[inline]
19            fn from(bytes: [u8; $bytes_size]) -> Self {
20                $name(bytes)
21            }
22        }
23        impl ::std::convert::From<$name> for [u8; $bytes_size] {
24            #[inline]
25            fn from(hash: $name) -> Self {
26                hash.0
27            }
28        }
29    };
30}
31
32impl_std_convert!(H160, 20);
33impl_std_convert!(H256, 32);
34impl_std_convert!(H512, 64);
35impl_std_convert!(H520, 65);