bbolt_rs/common/
errors.rs1use std::io;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
6pub enum Error {
7 #[error("database not open")]
11 DatabaseNotOpen,
12 #[error("database already open")]
15 DatabaseOpen,
16 #[error("invalid database - meta_can_read: `{0}`")]
19 InvalidDatabase(bool),
20 #[error("database isn't correctly mapped")]
22 InvalidMapping,
23 #[error("version mismatch")]
26 VersionMismatch,
27 #[error("checksum mismatch")]
29 ChecksumMismatch,
30 #[error("file size too small: `{0}`")]
32 FileSizeTooSmall(u64),
33 #[error("timeout")]
36 Timeout,
37 #[error("free pages are not pre-loaded")]
40 FreePagesNotLoaded,
41 #[error("bucket not found")]
45 BucketNotFound,
46 #[error("bucket already exists")]
48 BucketExists,
49 #[error("bucket name required")]
51 BucketNameRequired,
52 #[error("key required")]
54 KeyRequired,
55 #[error("key too large")]
57 KeyTooLarge,
58 #[error("value too large")]
60 ValueTooLarge,
61 #[error("incompatible value")]
65 IncompatibleValue,
66 #[error("mmap too small: `{0}`")]
68 MMapTooSmall(u64),
69 #[error("mmap too large")]
71 MMapTooLarge,
72 #[error("try function without batch call")]
74 TrySolo,
75 #[error("max batch delay or length is set to 0")]
77 BatchDisabled,
78 #[error(transparent)]
80 IO(#[from] io::Error),
81 #[error(transparent)]
83 Other(#[from] anyhow::Error),
84}
85
86impl PartialEq for Error {
87 fn eq(&self, other: &Self) -> bool {
88 matches!(
89 (self, other),
90 (&Error::DatabaseNotOpen, &Error::DatabaseNotOpen)
91 | (Error::DatabaseOpen, Error::DatabaseOpen)
92 | (Error::InvalidDatabase(_), Error::InvalidDatabase(_))
93 | (Error::InvalidMapping, Error::InvalidMapping)
94 | (Error::VersionMismatch, Error::VersionMismatch)
95 | (Error::ChecksumMismatch, Error::ChecksumMismatch)
96 | (Error::FileSizeTooSmall(_), Error::FileSizeTooSmall(_))
97 | (Error::Timeout, Error::Timeout)
98 | (Error::FreePagesNotLoaded, Error::FreePagesNotLoaded)
99 | (Error::BucketNotFound, Error::BucketNotFound)
100 | (Error::BucketExists, Error::BucketExists)
101 | (Error::BucketNameRequired, Error::BucketNameRequired)
102 | (Error::KeyRequired, Error::KeyRequired)
103 | (Error::KeyTooLarge, Error::KeyTooLarge)
104 | (Error::ValueTooLarge, Error::ValueTooLarge)
105 | (Error::IncompatibleValue, Error::IncompatibleValue)
106 | (Error::MMapTooSmall(_), Error::MMapTooSmall(_))
107 | (Error::MMapTooLarge, Error::MMapTooLarge)
108 | (Error::TrySolo, Error::TrySolo)
109 | (Error::BatchDisabled, Error::BatchDisabled)
110 )
111 }
112}
113
114impl Eq for Error {}
115
116pub type Result<T, E = Error> = std::result::Result<T, E>;