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}