1use std::fmt::Display;
2
3#[derive(Debug)]
4pub enum Error {
5 InvalidSlabSize,
6 InvalidNumWorkers,
7 InvalidWorkerIndex,
8 InvalidFileSize,
9 AlreadyInitialized,
10 InvalidHeader,
11 IoError(std::io::Error),
12 MmapError(std::io::Error),
13}
14
15impl std::error::Error for Error {}
16
17impl Display for Error {
18 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
19 match self {
20 Self::InvalidSlabSize => write!(f, "invalid slab size"),
21 Self::InvalidNumWorkers => write!(f, "invalid num workers"),
22 Self::InvalidWorkerIndex => write!(f, "invalid worker index"),
23 Self::InvalidFileSize => write!(f, "invalid file size"),
24 Self::AlreadyInitialized => write!(f, "already initialized"),
25 Self::InvalidHeader => write!(f, "invalid header"),
26 Self::IoError(err) => write!(f, "io error; err={err}"),
27 Self::MmapError(err) => write!(f, "mmap error; err={err}"),
28 }
29 }
30}
31
32impl From<std::io::Error> for Error {
33 fn from(value: std::io::Error) -> Self {
34 Self::IoError(value)
35 }
36}