use std::error::Error;
use std::fmt::Display;
use std::path::PathBuf;
#[derive(Debug)]
pub enum TransientError {
IncretmentError,
ParsingToByteError,
ParsingToUTF8Error,
SledError {
error: sled::Error
},
SledTransactionError,
ParsingToU64ByteFailed,
FolderNotFound { path: PathBuf },
ZipError {
error: zip::result::ZipError
},
FileNameDoesntExist,
MetadataNotFound,
DBMetadataNotFound,
PoisonedMutex,
ParsingFromByteError,
IOError {
error: std::io::Error
}
}
impl Display for TransientError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
TransientError::IncretmentError => writeln!(f, "Incretment has failed"),
TransientError::ParsingToByteError => writeln!(f, "Parsing to byte failed"),
TransientError::ParsingToUTF8Error => writeln!(f, "Parsing to utf8 failed"),
TransientError::SledError {
error
} => writeln!(f, "Sled failed {error}"),
TransientError::SledTransactionError => writeln!(f, "Sled Transaction failed"),
TransientError::ParsingToU64ByteFailed => {
writeln!(f, "Failed to parse a variable to a U64 byte [u8; 8]")
},
TransientError::FolderNotFound {
path
} => {
writeln!(f, "Folder is not found at the path: {path:#?}")
},
TransientError::ZipError {
error
} => writeln!(f, "Zip crate failed {error}"),
TransientError::FileNameDoesntExist => writeln!(f, "File name doesnt exist"),
TransientError::MetadataNotFound => writeln!(f, "Metadata is not found"),
TransientError::DBMetadataNotFound => writeln!(f, "DB metadata is not found"),
TransientError::PoisonedMutex => writeln!(f, "Mutex is poisoned"),
TransientError::ParsingFromByteError => writeln!(f, "Partsing from byte failed"),
TransientError::IOError {
error
} => writeln!(f, "std IO failed {error}")
}
}
}
impl Error for TransientError {}