use dusk_bytes::{BadLength, InvalidChar, Serializable};
use dusk_bytes::HexDebug;
#[derive(HexDebug)]
pub struct Beef {}
#[derive(Debug)]
pub enum BeefError {
InvalidBytes,
UnexpectedEof,
CharNotValid(char, usize),
}
impl Serializable<2> for Beef {
type Error = BeefError;
fn from_bytes(buf: &[u8; Self::SIZE]) -> Result<Self, Self::Error> {
if buf[0] == 0xbe && buf[1] == 0xef {
Ok(Self {})
} else {
Err(BeefError::InvalidBytes)
}
}
fn to_bytes(&self) -> [u8; Self::SIZE] {
[0xbe, 0xef]
}
}
impl BadLength for BeefError {
fn bad_length(_found: usize, _expected: usize) -> Self {
Self::UnexpectedEof
}
}
impl InvalidChar for BeefError {
fn invalid_char(ch: char, index: usize) -> Self {
Self::CharNotValid(ch, index)
}
}