use crate::traits::Builder;
pub struct ByteBuilder {
pub bytes: Vec<u8>,
}
impl ByteBuilder {
pub fn new() -> Self {
ByteBuilder {
bytes: Vec::new(),
}
}
pub fn with_capacity(capacity: usize) -> Self {
ByteBuilder {
bytes: Vec::with_capacity(capacity),
}
}
pub fn from_bytes(bytes: Vec<u8>) -> Self {
ByteBuilder { bytes }
}
}
impl Builder for ByteBuilder {
fn push_u8(&mut self, value: u8) {
self.bytes.push(value);
}
fn as_slice(&self) -> &[u8] {
&self.bytes
}
fn build(self) -> Vec<u8> {
self.bytes
}
}
impl From<&[u8]> for ByteBuilder {
fn from(value: &[u8]) -> Self {
ByteBuilder {
bytes: value.to_vec(),
}
}
}
impl From<Vec<u8>> for ByteBuilder {
fn from(value: Vec<u8>) -> Self {
ByteBuilder { bytes: value }
}
}
impl From<ByteBuilder> for Vec<u8> {
fn from(builder: ByteBuilder) -> Self {
builder.bytes
}
}