content_addressable/lib.rs
1#![doc = include_str!("lib.md")]
2#![warn(missing_docs)]
3
4// -------------------------------------------------------------------------
5// This file is a MANIFEST, not a member. It contains only composition: crate
6// attributes, the crate doc (in `lib.md`, included above), module declarations,
7// and the public re-export facade — no item definitions, no logic, no tests.
8// Growth delegates DOWN: catalog structures register in `src/structures.rs`,
9// never here, so the root stays a fixed-size manifest as the catalog grows.
10// See WORKSPACE_RULES.md -> "Composition roots are manifests, not members".
11// -------------------------------------------------------------------------
12
13// --- Spine: the minimal, stable, always-on surface. ---
14pub mod canonical;
15pub mod content_id;
16pub mod error;
17pub mod trait_def;
18
19// --- Seams the catalog builds on (feature-gated infrastructure). ---
20#[cfg(feature = "unstable-merkle")]
21pub mod merkle;
22#[cfg(feature = "unstable-store")]
23pub mod store;
24
25// --- The catalog: ONE line. The sub-manifest owns the members. ---
26pub mod structures;
27
28// FROZEN crate-root re-export surface (gate item #9) — see the "Public API
29// surface (FROZEN at 0.1.0)" section in `lib.md`. Keep this set minimal and
30// explicit: it is the stable SPINE only. Catalog structures are reached at their
31// `structures::…` path and are deliberately NOT flattened here (freeze-minimally
32// applied to the public surface), so this list does not grow with the catalog.
33// Removing or narrowing an entry is a major version bump.
34pub use content_id::ContentId;
35pub use error::ContentError;
36#[cfg(feature = "unstable-merkle")]
37pub use merkle::MerkleNode;
38#[cfg(feature = "unstable-store")]
39pub use store::{
40 AddressedBytes, MemoryStore, NodeStore, NodeStoreExt, StoreError, StoreOperation, VerifiedStore,
41};
42pub use trait_def::ContentAddressable;