pub trait Byteable {
fn bytes (&self) -> Vec<u8>;
}
impl Byteable for i32 {
fn bytes(&self) -> Vec<u8> {
let data = &self.to_le_bytes();
data.to_vec()
}
}
impl Byteable for String{
fn bytes(&self) -> Vec<u8> {
let data = &self.as_bytes();
data.to_vec()
}
}
impl<T> Byteable for [T]
where
T: Byteable,
{
fn bytes(&self) -> Vec<u8> {
let mut data : Vec<u8> = Vec::new();
for x in self {
data.extend(x.bytes().iter().cloned());
}
data
}
}