use super::{Serializable, Vec};
pub trait ByteWriter: Sized {
fn write_u8(&mut self, value: u8);
fn write_bytes(&mut self, values: &[u8]);
fn write_bool(&mut self, val: bool) {
self.write_u8(val as u8);
}
fn write_u16(&mut self, value: u16) {
self.write_bytes(&value.to_le_bytes());
}
fn write_u32(&mut self, value: u32) {
self.write_bytes(&value.to_le_bytes());
}
fn write_u64(&mut self, value: u64) {
self.write_bytes(&value.to_le_bytes());
}
fn write<S: Serializable>(&mut self, value: S) {
value.write_into(self)
}
}
impl ByteWriter for Vec<u8> {
fn write_u8(&mut self, value: u8) {
self.push(value);
}
fn write_bytes(&mut self, values: &[u8]) {
self.extend_from_slice(values);
}
}