obj-core 1.1.1

Storage engine internals for the obj embedded document database (pager, WAL, B-tree, codec, catalog).
Documentation
//! `obj-core` — internal storage engine for the `obj` embedded document
//! database.
//!
//! # ⚠️ UNSTABLE — not a stable public API
//!
//! `obj-core` is an **implementation detail of `obj-db`**. It is published
//! to `crates.io` only because `obj-db` depends on it; its public API carries
//! **no `SemVer` guarantee** and may change in any release, including patch
//! releases. Do not depend on `obj-core` directly — depend on `obj-db` and
//! use the `obj` crate's API. Only `obj-db`'s public surface is frozen at
//! 1.0 (see `docs/public-api.md`); `obj-core` is deliberately excluded from
//! the public-api freeze gate so the engine can evolve freely.
//!
//! This crate hosts the layered storage engine: the platform syscall
//! wrappers (L0), the pager (L1), the WAL (L2), the B-tree (L3), the
//! document codec (L4), the catalog (L5), and the transaction manager
//! (L7). Layers are built bottom-up across milestones; see the project
//! plan and `power-of-ten.md` for the design discipline this crate
//! must uphold.
//!
//! # On-disk format
//!
//! The `.obj` file format that this crate reads and writes is specified
//! in `docs/format.md` at the repository root. That document is the
//! authoritative description of the page-0 file header, the per-page
//! CRC32C trailer scheme, and the page-type tag enumeration; this
//! crate is its reference implementation.
//!
//! # `unsafe` policy
//!
//! This crate does **not** carry a crate-level `#![forbid(unsafe_code)]`
//! because the `platform` submodule holds the project's syscall
//! wrappers. Every other submodule should be safe; new submodules
//! SHOULD include `#![forbid(unsafe_code)]` of their own where
//! appropriate.

#![deny(missing_docs)]
#![deny(rustdoc::broken_intra_doc_links)]

pub mod backup;
pub mod btree;
pub mod catalog;
pub mod codec;
#[cfg(feature = "encryption")]
pub mod crypto;
pub mod error;
pub mod id;
pub mod index;
pub mod integrity;
pub mod pager;
pub mod platform;
pub mod txn;
pub mod wal;

pub use crate::catalog::{Catalog, CollectionDescriptor, IndexDescriptor, IndexStatus};
pub use crate::codec::Document;
pub use crate::error::{Error, LockKind, Result};
pub use crate::id::Id;
pub use crate::index::{IndexKind, IndexSpec};
pub use crate::integrity::{IntegrityFailure, IntegrityReport};
pub use crate::pager::{CompressionMode, PageHandle, ReaderSnapshot, SnapshotId};
pub use crate::platform::{FileBackend, SyncMode};
pub use crate::txn::{ReadTxn, TxnEnv, WriteTxn, DEFAULT_BUSY_TIMEOUT};
pub use crate::wal::Lsn;