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 {}