doip_codec/error.rs
1use derive_more::From;
2
3/// Custom Result type which allows for easier typing of errors across the API.
4pub type Result<T> = core::result::Result<T, Error>;
5
6/// Custom Error enum for deriving error types across the application and API.
7///
8/// Expand to fit new dependencies using `#[from]` and implement custom error types
9/// with context.
10#[derive(Debug, From)]
11pub enum Error {
12 /// Derived implementation for standard library IO errors
13 #[from]
14 #[cfg(feature = "std")]
15 IoError(std::io::Error),
16
17 /// Derived implementation for Doip Definition errors
18 #[from]
19 DefinitionError(doip_definitions::error::Error),
20
21 /// Derived implementation for standard library Slice errors
22 #[from]
23 #[allow(clippy::enum_variant_names)]
24 SliceError(core::array::TryFromSliceError),
25
26 /// Derived for heapless extend from slice errors
27 #[from]
28 Heapless(()),
29}
30
31impl core::fmt::Display for Error {
32 fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error> {
33 write!(fmt, "{self:?}")
34 }
35}