1use crate::{base::KeyKind, manifest::ManifestError};
2use derive_more::{Display, Error, From};
3use num_enum::TryFromPrimitiveError;
4
5#[derive(Debug, Display, Error, From)]
6pub enum StorageError {
7 #[display("i/o error: {}", _0)]
8 IoError(std::io::Error),
9
10 #[display("failed to encode: {}", _0)]
11 BincodeError(bincode::Error),
12
13 #[display("manifest: {}", _0)]
16 Manifest(ManifestError),
17
18 #[display("invalid key kind: {}", _0.number)]
21 InvalidKeyKind(TryFromPrimitiveError<KeyKind>),
22
23 #[display("wal header corrupted: expected filenum {} but got {}", expected, got)]
24 WalCorruption { expected: u64, got: u64 },
25
26 #[display("storage worker died")]
27 WorkerDied,
28}