scsys_crypto/hash/h256/
impl_convert.rs1use super::H256;
6
7impl FromIterator<u8> for H256 {
8 fn from_iter<T: IntoIterator<Item = u8>>(iter: T) -> Self {
9 let digest = iter.into_iter().collect::<Vec<u8>>();
10 crate::digest_to_hash::<32>(&digest).into()
11 }
12}
13
14impl IntoIterator for H256 {
15 type Item = u8;
16 type IntoIter = core::array::IntoIter<u8, 32>;
17
18 fn into_iter(self) -> Self::IntoIter {
19 self.0.into_iter()
20 }
21}
22
23impl<T> From<&T> for H256
24where
25 T: AsRef<[u8]>,
26{
27 fn from(data: &T) -> H256 {
28 let mut buffer: [u8; 32] = [0; 32];
29 buffer[..].copy_from_slice(data.as_ref());
30 H256(buffer)
31 }
32}
33
34impl From<[u8; 32]> for H256 {
35 fn from(input: [u8; 32]) -> H256 {
36 H256(input)
37 }
38}
39
40impl From<H256> for [u8; 32] {
41 fn from(input: H256) -> [u8; 32] {
42 input.0
43 }
44}
45
46impl From<Vec<u8>> for H256 {
47 fn from(input: Vec<u8>) -> H256 {
48 crate::digest_to_hash::<32>(&input).into()
49 }
50}
51
52impl From<H256> for Vec<u8> {
53 fn from(input: H256) -> Vec<u8> {
54 input.0.to_vec()
55 }
56}
57
58impl From<crate::GenericHash> for H256 {
59 fn from(data: crate::GenericHash) -> H256 {
60 data.as_slice().to_owned().into()
61 }
62}
63
64impl From<H256> for crate::GenericHash {
65 fn from(input: H256) -> crate::GenericHash {
66 crate::GenericHash::from(input.0)
67 }
68}
69
70impl From<crate::hash::H160> for H256 {
71 fn from(input: crate::hash::H160) -> H256 {
72 let mut buffer = [0; 32];
73 buffer[..].copy_from_slice(&input.0[0..20]);
74 buffer.into()
75 }
76}
77
78impl From<H256> for crate::hash::H160 {
79 fn from(input: H256) -> crate::hash::H160 {
80 let mut buffer = [0; 20];
81 buffer[..].copy_from_slice(&input.0[0..20]);
82 buffer.into()
83 }
84}