use alloc::vec::Vec;
#[derive(Default)]
pub struct BufEncoder {
buf: Vec<u8>
}
impl BufEncoder {
#[inline]
pub fn new() -> Self {
Self { buf: Vec::new() }
}
#[inline]
pub fn with_capacity(cap: usize) -> Self {
Self { buf: Vec::with_capacity(cap) }
}
#[inline]
pub fn write_u8(&mut self, value: u8) {
self.buf.push(value);
}
#[inline]
pub fn write_u16(&mut self, value: u16) {
self.buf.extend_from_slice(&value.to_le_bytes());
}
#[inline]
pub fn write_u32(&mut self, value: u32) {
self.buf.extend_from_slice(&value.to_le_bytes());
}
#[inline]
pub fn write_u64(&mut self, value: u64) {
self.buf.extend_from_slice(&value.to_le_bytes());
}
#[inline]
pub fn write_bytes(&mut self, bytes: &[u8]) {
self.buf.extend_from_slice(bytes);
}
#[inline]
pub fn finish(self) -> Vec<u8> {
self.buf
}
#[inline]
pub fn len(&self) -> usize {
self.buf.len()
}
#[inline]
pub fn is_empty(&self) -> bool {
self.buf.is_empty()
}
}