binary_cookies/
errno.rs

1use std::{error::Error, fmt::Display, io::Error as IoError};
2
3#[derive(Debug)]
4pub enum BinaryCookieError {
5    InvalidIndexOverBounds,
6    InvalidSignature,
7    InvalidStartCode,
8    EndCodeError,
9    EndHeaderCodeError,
10    DataOverSize,
11    SystemIOError(IoError),
12}
13
14impl Error for BinaryCookieError {}
15
16impl Display for BinaryCookieError {
17    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18        match self {
19            BinaryCookieError::InvalidIndexOverBounds => {
20                write!(f, "index out of bounds, binarycookies format failed")
21            }
22            BinaryCookieError::InvalidSignature => {
23                write!(f, "signature code is invalid, need 'cook'")
24            }
25            BinaryCookieError::InvalidStartCode => {
26                write!(f, "start code is invalid, except '0010'")
27            }
28            BinaryCookieError::EndCodeError => write!(f, "end code is invalid, need '0000'"),
29            BinaryCookieError::EndHeaderCodeError => {
30                write!(f, "end header code not allow, need '0000'")
31            }
32            BinaryCookieError::DataOverSize => write!(f, "data size over size"),
33            BinaryCookieError::SystemIOError(err) => write!(f, "{}", err),
34        }
35    }
36}
37
38impl From<std::io::Error> for BinaryCookieError {
39    fn from(value: IoError) -> Self {
40        BinaryCookieError::SystemIOError(value)
41    }
42}