acn-protocol 0.3.1

ACN protocol written in Rust
Documentation
use crate::vector::Vector;
use core::{array::TryFromSliceError, fmt};

#[derive(Clone, Debug)]
#[non_exhaustive]
pub enum AcnError {
    InvalidBufferLength { actual: usize, expected: usize },
    InvalidVector(Vector),
    InvalidPreamble,
    InvalidPostamble,
    TryFromSliceError(TryFromSliceError),
}

impl From<TryFromSliceError> for AcnError {
    fn from(err: TryFromSliceError) -> Self {
        AcnError::TryFromSliceError(err)
    }
}

impl fmt::Display for AcnError {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            Self::InvalidBufferLength { actual, expected } => {
                write!(f, "Invalid Buffer Length: {actual}, expected: {expected}")
            }
            Self::InvalidVector(vector) => write!(f, "Invalid Vector: {vector:?}"),
            Self::InvalidPreamble => write!(f, "Invalid Preamble"),
            Self::InvalidPostamble => write!(f, "Invalid Postamble"),
            Self::TryFromSliceError(err) => write!(f, "TryFromSliceError: {err}"),
        }
    }
}

impl core::error::Error for AcnError {}