1use std::fmt;
2use std::io;
3
4#[derive(Debug)]
5pub enum CodecError {
6 Io(io::Error),
7 Encode(postcard::Error),
8 Decode(postcard::Error),
9 FrameTooLarge(u32),
10}
11
12impl fmt::Display for CodecError {
13 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14 match self {
15 Self::Io(e) => write!(f, "i/o error: {e}"),
16 Self::Encode(e) => write!(f, "encode error: {e}"),
17 Self::Decode(e) => write!(f, "decode error: {e}"),
18 Self::FrameTooLarge(len) => write!(f, "frame too large: {len} bytes"),
19 }
20 }
21}
22
23impl std::error::Error for CodecError {}
24
25impl From<io::Error> for CodecError {
26 fn from(value: io::Error) -> Self {
27 Self::Io(value)
28 }
29}