#![allow(async_fn_in_trait)]
pub mod lance_storage_graph;
pub mod metadata;
pub mod traits;
#[cfg(test)]
mod tests;
use std::fmt;
#[derive(Debug)]
#[non_exhaustive]
pub enum StorageError {
Io(String),
Serde(serde_json::Error),
Parquet(String),
Invalid(String),
Lance(String),
QueryError(String),
InvalidState(String),
UnsupportedFormat(String),
UnsupportedFiletype(String),
DimensionMismatch {
expected: String,
found: String,
},
Overflow(String),
}
impl fmt::Display for StorageError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
StorageError::Io(msg) => write!(f, "IO error: {}", msg),
StorageError::Serde(msg) => write!(f, "Serialization error: {}", msg),
StorageError::Parquet(msg) => write!(f, "Parquet error: {}", msg),
StorageError::Invalid(msg) => write!(f, "Invalid data: {}", msg),
StorageError::Lance(msg) => write!(f, "Lance error: {}", msg),
StorageError::QueryError(msg) => write!(f, "Query error: {}", msg),
StorageError::InvalidState(msg) => write!(f, "Invalid state: {}", msg),
StorageError::UnsupportedFormat(msg) => write!(f, "Unsupported format: {}", msg),
StorageError::UnsupportedFiletype(msg) => write!(f, "Unsupported filetype: {}", msg),
StorageError::DimensionMismatch { expected, found } => {
write!(
f,
"Dimension mismatch: expected {}, found {}",
expected, found
)
}
StorageError::Overflow(msg) => write!(f, "Overflow error: {}", msg),
}
}
}
impl std::error::Error for StorageError {}
pub type StorageResult<T> = Result<T, StorageError>;
use std::sync::Once;
static INIT: Once = Once::new();
pub fn init() {
INIT.call_once(|| {
let env = env_logger::Env::default().default_filter_or("debug");
let _ = env_logger::Builder::from_env(env).try_init();
});
}