acn_protocol/
error.rs

1use crate::vector::Vector;
2use core::{array::TryFromSliceError, fmt};
3
4#[derive(Clone, Debug)]
5#[non_exhaustive]
6pub enum AcnError {
7    InvalidBufferLength { actual: usize, expected: usize },
8    InvalidVector(Vector),
9    InvalidPreamble,
10    InvalidPostamble,
11    TryFromSliceError(TryFromSliceError),
12}
13
14impl From<TryFromSliceError> for AcnError {
15    fn from(err: TryFromSliceError) -> Self {
16        AcnError::TryFromSliceError(err)
17    }
18}
19
20impl fmt::Display for AcnError {
21    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
22        match self {
23            Self::InvalidBufferLength { actual, expected } => {
24                write!(f, "Invalid Buffer Length: {actual}, expected: {expected}")
25            }
26            Self::InvalidVector(vector) => write!(f, "Invalid Vector: {vector:?}"),
27            Self::InvalidPreamble => write!(f, "Invalid Preamble"),
28            Self::InvalidPostamble => write!(f, "Invalid Postamble"),
29            Self::TryFromSliceError(err) => write!(f, "TryFromSliceError: {err}"),
30        }
31    }
32}
33
34impl core::error::Error for AcnError {}