cs_mwc_bch/util/
serdes.rs

1use std::io;
2use std::io::{Read, Write};
3use util::Result;
4
5/// An object that may be serialized and deserialized
6pub trait Serializable<T> {
7    /// Reads the object from serialized form
8    fn read(reader: &mut dyn Read) -> Result<T>
9    where
10        Self: Sized;
11
12    /// Writes the object to serialized form
13    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}