cs_mwc_bch/util/
serdes.rs1use std::io;
2use std::io::{Read, Write};
3use util::Result;
4
5pub trait Serializable<T> {
7 fn read(reader: &mut dyn Read) -> Result<T>
9 where
10 Self: Sized;
11
12 fn write(&self, writer: &mut dyn Write) -> io::Result<()>;
14}
15
16impl Serializable<[u8; 16]> for [u8; 16] {
17 fn read(reader: &mut dyn Read) -> Result<[u8; 16]> {
18 let mut d = [0; 16];
19 reader.read(&mut d)?;
20 Ok(d)
21 }
22
23 fn write(&self, writer: &mut dyn Write) -> io::Result<()> {
24 writer.write(self)?;
25 Ok(())
26 }
27}
28
29impl Serializable<[u8; 32]> for [u8; 32] {
30 fn read(reader: &mut dyn Read) -> Result<[u8; 32]> {
31 let mut d = [0; 32];
32 reader.read(&mut d)?;
33 Ok(d)
34 }
35
36 fn write(&self, writer: &mut dyn Write) -> io::Result<()> {
37 writer.write(self)?;
38 Ok(())
39 }
40}