#![doc(html_no_source)]
#![deny(missing_docs)]
#![warn(rust_2018_idioms)]
#![warn(clippy::pedantic)]
#![allow(
// Intentional: many `T as U` casts are guarded by upstream
// invariants (slot < MAX_SLOTS = 10240 < u16::MAX, value
// length already validated < u16::MAX, etc.). Replacing all
// with `try_into().unwrap()` would be net negative.
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_sign_loss,
clippy::cast_lossless,
// Misleading suggestion when we're explicitly choosing the
// unchecked path for layout reasons.
clippy::cast_ptr_alignment,
// Many internal `Result`-returning helpers don't need an
// `# Errors` section — the docstring already explains
// failure modes inline.
clippy::missing_errors_doc,
clippy::missing_panics_doc,
// Pedantic style nits that don't affect correctness:
clippy::module_name_repetitions,
clippy::must_use_candidate,
clippy::needless_pass_by_value,
clippy::similar_names,
clippy::stable_sort_primitive,
clippy::large_types_passed_by_value,
clippy::struct_field_names,
// Reserved-counter fields in `BlobHeader` (RE'd byte
// positions) intentionally aren't read from yet; the
// compile-time offset asserts pin them in place.
clippy::struct_excessive_bools,
// Docstrings already use backticks for code spans; the
// remaining flagged identifiers (e.g. "BufferManager",
// "BlobFrame") are prose-level references where the
// backtick noise is net-negative.
clippy::doc_markdown,
// Mixing items / statements is fine in small fns; refusing
// it forces hoisting of locally-scoped const helpers.
clippy::items_after_statements
)]
#[cfg(not(unix))]
compile_error!(
"holt is Unix-only — Linux and macOS are supported. Windows is out of scope; \
see ROADMAP.md."
);
mod api;
pub(crate) mod checkpoint;
pub(crate) mod concurrency;
pub(crate) mod engine;
pub(crate) mod journal;
pub(crate) mod layout;
pub(crate) mod store;
#[cfg(feature = "metrics")]
pub mod metrics;
pub use api::builder::TreeBuilder;
pub use api::config::{Storage, TreeConfig, WalCommit};
pub use api::errors::{Error, Result};
pub use api::tree::Tree;
pub use api::view::{View, ViewKeyRangeBuilder, ViewRangeBuilder};
pub use engine::{
KeyRangeBuilder, KeyRangeEntry, KeyRangeEntryRef, KeyRangeIter, RangeBuilder, RangeEntry,
RangeIter,
};
pub use api::stats::{BlobStats, CheckpointerStats, JournalStats, RouteCacheStats, TreeStats};
pub use api::atomic::{AtomicBatch, Record, RecordVersion};
pub use checkpoint::CheckpointConfig;
pub use layout::BlobGuid;
pub use store::blob_store::{AlignedBlobBuf, BlobStore, FileBlobStore, MemoryBlobStore};