use std::io;
use thiserror::Error;
pub type StorageResult<T> = Result<T, StorageError>;
#[derive(Debug, Error)]
pub enum StorageError {
#[error("I/O error: {0}")]
Io(#[from] io::Error),
#[error("read beyond end of storage: offset {offset}, len {len}, size {size}")]
ReadPastEnd {
offset: u64,
len: usize,
size: u64,
},
#[error("storage corrupted: {0}")]
Corrupted(String),
#[error("storage is closed")]
Closed,
#[error("encryption error: {0}")]
Encryption(String),
}