1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use thiserror::Error; #[derive(Error, Debug, PartialEq)] pub enum Error { #[error("buffer: full")] ErrBufferFull, #[error("buffer: closed")] ErrBufferClosed, #[error("buffer: short")] ErrBufferShort, #[error("packet too big")] ErrPacketTooBig, #[error("i/o timeout")] ErrTimeout, #[allow(non_camel_case_types)] #[error("{0}")] new(String), } impl Error { pub fn equal(&self, err: &anyhow::Error) -> bool { err.downcast_ref::<Self>().map_or(false, |e| e == self) } }