#![doc(html_logo_url = "https://raw.githubusercontent.com/fjall-rs/fjall/main/logo.png")]
#![doc(html_favicon_url = "https://raw.githubusercontent.com/fjall-rs/fjall/main/logo.png")]
#![deny(unsafe_code)]
#![deny(clippy::all, missing_docs, clippy::cargo)]
#![deny(clippy::unwrap_used)]
#![deny(clippy::indexing_slicing)]
#![warn(clippy::pedantic, clippy::nursery)]
#![warn(clippy::expect_used)]
#![allow(clippy::missing_const_for_fn, clippy::significant_drop_tightening)]
#![warn(clippy::multiple_crate_versions)]
#![cfg_attr(docsrs, feature(doc_cfg))]
macro_rules! fail_iter {
($e:expr) => {
match $e {
Ok(v) => v,
Err(e) => return Some(Err(e.into())),
}
};
}
mod batch;
mod builder;
pub mod compaction;
mod db_config;
#[cfg(feature = "__internal_whitebox")]
#[doc(hidden)]
pub mod drop;
mod db;
#[cfg(test)]
mod db_test;
mod error;
mod file;
mod flush;
mod guard;
mod ingestion;
mod iter;
mod journal;
mod keyspace;
mod locked_file;
mod meta_keyspace;
mod path;
mod poison_dart;
mod readable;
mod recovery;
mod snapshot;
mod snapshot_nonce;
mod snapshot_tracker;
mod stats;
mod supervisor;
mod tx;
mod version;
mod worker_pool;
mod write_buffer_manager;
pub(crate) type HashMap<K, V> = std::collections::HashMap<K, V, xxhash_rust::xxh3::Xxh3Builder>;
pub mod config {
pub use lsm_tree::config::{
BlockSizePolicy, BloomConstructionPolicy, CompressionPolicy, FilterPolicy,
FilterPolicyEntry, HashRatioPolicy, PartitioningPolicy, PinningPolicy,
RestartIntervalPolicy,
};
}
pub use {
batch::WriteBatch as OwnedWriteBatch,
builder::Builder as DatabaseBuilder,
db::Database,
db_config::Config,
error::{Error, Result},
guard::Guard,
iter::Iter,
journal::{error::RecoveryError as JournalRecoveryError, writer::PersistMode},
keyspace::{options::CreateOptions as KeyspaceCreateOptions, Keyspace},
readable::Readable,
snapshot::Snapshot,
version::FormatVersion,
};
pub use tx::single_writer::{
SingleWriterTxKeyspace, TxDatabase as SingleWriterTxDatabase,
WriteTransaction as SingleWriterWriteTx,
};
pub use tx::optimistic::{
Conflict, OptimisticTxDatabase, OptimisticTxKeyspace, WriteTransaction as OptimisticWriteTx,
};
#[doc(hidden)]
pub use lsm_tree::{AbstractTree, AnyTree, Error as LsmError, TreeType};
pub use lsm_tree::{
CompressionType, KvPair, KvSeparationOptions, SeqNo, Slice, UserKey, UserValue,
};
pub mod util {
pub use lsm_tree::util::{prefix_to_range, prefixed_range};
}