use std::io;
use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum Error {
#[error(transparent)]
Io(#[from] io::Error),
#[error("file shorter than btree meta page")]
ShortFile,
#[error("not a btree 1.85 file: bad magic {magic:#010x}")]
BadMagic {
magic: u32,
},
#[error("unsupported btree version {version} (expected 3)")]
BadVersion {
version: u32,
},
#[error("invalid page size {psize}")]
BadPageSize {
psize: u32,
},
#[error("file length {len} is not a multiple of page size {psize}")]
UnalignedFileLength {
len: u64,
psize: u32,
},
#[error("unsupported metadata flags {flags:#x}")]
UnsupportedFlags {
flags: u32,
},
#[error("page {pgno} is past end of file")]
PageOutOfBounds {
pgno: u32,
},
#[error("corrupt page {pgno}: {reason}")]
CorruptPage {
pgno: u32,
reason: &'static str,
},
#[error("corrupt overflow chain starting at page {pgno}")]
CorruptOverflow {
pgno: u32,
},
#[error("entry too large for inline storage (key={key_len}B, val={val_len}B)")]
EntryTooLarge {
key_len: usize,
val_len: usize,
},
}