#![doc(
html_logo_url = "https://raw.githubusercontent.com/structured-world/coordinode-lsm-tree/main/logo.png"
)]
#![doc(
html_favicon_url = "https://raw.githubusercontent.com/structured-world/coordinode-lsm-tree/main/logo.png"
)]
#![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)]
#![warn(clippy::multiple_crate_versions)]
#![allow(clippy::option_if_let_else)]
#![warn(clippy::redundant_feature_names)]
#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
#[doc(hidden)]
pub type HashMap<K, V> = std::collections::HashMap<K, V, rustc_hash::FxBuildHasher>;
pub(crate) type HashSet<K> = std::collections::HashSet<K, rustc_hash::FxBuildHasher>;
macro_rules! fail_iter {
($e:expr) => {
match $e {
Ok(v) => v,
Err(e) => return Some(Err(e.into())),
}
};
}
macro_rules! unwrap {
($x:expr) => {{ $x.expect("should read") }};
}
mod any_tree;
mod abstract_tree;
#[doc(hidden)]
pub mod blob_tree;
mod comparator;
#[doc(hidden)]
mod cache;
#[doc(hidden)]
pub mod checksum;
#[doc(hidden)]
pub mod coding;
pub mod compaction;
mod compression;
pub mod encryption;
pub mod config;
#[doc(hidden)]
pub mod descriptor_table;
#[doc(hidden)]
pub mod file_accessor;
mod double_ended_peekable;
mod error;
#[doc(hidden)]
pub mod file;
pub mod fs;
mod hash;
mod heap;
mod ingestion;
mod iter_guard;
mod key;
mod key_range;
mod manifest;
mod memtable;
mod merge_operator;
mod run_reader;
mod run_scanner;
#[doc(hidden)]
pub mod merge;
#[cfg(feature = "metrics")]
pub(crate) mod metrics;
#[doc(hidden)]
pub mod mvcc_stream;
mod path;
mod prefix;
#[doc(hidden)]
pub mod range;
pub(crate) mod active_tombstone_set;
pub(crate) mod range_tombstone;
pub(crate) mod range_tombstone_filter;
#[doc(hidden)]
pub mod table;
mod seqno;
mod slice;
mod slice_windows;
#[doc(hidden)]
pub mod stop_signal;
mod format_version;
mod time;
mod tree;
pub mod util;
mod value;
mod value_type;
pub mod verify;
mod version;
mod vlog;
pub type UserKey = Slice;
pub type UserValue = Slice;
pub type KvPair = (UserKey, UserValue);
#[doc(hidden)]
pub use {
blob_tree::{Guard as BlobGuard, handle::BlobIndirection},
checksum::Checksum,
iter_guard::IterGuardImpl,
key_range::KeyRange,
merge::BoxedIterator,
slice::Builder,
table::{GlobalTableId, Table, TableId},
tree::Guard as StandardGuard,
tree::inner::TreeId,
value::InternalValue,
};
pub use encryption::EncryptionProvider;
#[cfg(feature = "encryption")]
pub use encryption::Aes256GcmProvider;
pub use {
abstract_tree::AbstractTree,
any_tree::AnyTree,
blob_tree::BlobTree,
cache::Cache,
comparator::{DefaultUserComparator, SharedComparator, UserComparator},
compression::CompressionType,
config::{Config, KvSeparationOptions, TreeType},
descriptor_table::DescriptorTable,
error::{Error, Result},
format_version::FormatVersion,
ingestion::AnyIngestion,
iter_guard::IterGuard as Guard,
memtable::{Memtable, MemtableId},
merge_operator::MergeOperator,
prefix::PrefixExtractor,
seqno::{
MAX_SEQNO, SequenceNumberCounter, SequenceNumberGenerator, SharedSequenceNumberGenerator,
},
slice::Slice,
tree::Tree,
value::SeqNo,
value_type::ValueType,
vlog::BlobFile,
};
#[cfg(zstd_any)]
pub use compression::ZstdDictionary;
#[cfg(feature = "metrics")]
pub use metrics::Metrics;
#[doc(hidden)]
#[must_use]
#[allow(missing_docs, clippy::missing_errors_doc, clippy::unwrap_used)]
pub fn get_tmp_folder() -> tempfile::TempDir {
if let Ok(p) = std::env::var("LSMT_TMP_FOLDER") {
tempfile::tempdir_in(p)
} else {
tempfile::tempdir()
}
.unwrap()
}