blockchainblock/
byteable.rs

1/// A trait for converting to bytes an object.
2pub trait Byteable {
3    /// Return the memory representation as a byte array in little-endian byte order.
4    fn bytes (&self) -> Vec<u8>;
5    // fn to_le_bytes (&self) -> [u8; usize];
6}
7
8impl Byteable for i32 {
9    fn bytes(&self) -> Vec<u8> {
10        let data = &self.to_le_bytes();
11        data.to_vec()
12    }
13}
14
15impl Byteable for String{
16    fn bytes(&self) -> Vec<u8> {    
17        let data = &self.as_bytes();
18        data.to_vec()
19    }
20}
21
22impl<T> Byteable for [T]
23where
24    T: Byteable,
25{
26    fn bytes(&self) -> Vec<u8> {
27        let mut data : Vec<u8> = Vec::new();
28        for x in self {
29            data.extend(x.bytes().iter().cloned());
30        }
31        data
32    }
33}