grafeo_common/lib.rs
1//! # grafeo-common
2//!
3//! The foundation layer - types and utilities used everywhere in Grafeo.
4//!
5//! You probably don't need to use this crate directly. The main `grafeo` crate
6//! re-exports the types you'll actually use ([`NodeId`], [`EdgeId`], [`Value`]).
7//!
8//! If you're building extensions or diving into internals, here's what's here:
9//!
10//! ## Modules
11//!
12//! - [`types`] - Core types: [`NodeId`], [`EdgeId`], [`Value`], [`PropertyKey`]
13//! - [`collections`] - Type aliases for hash maps/sets with consistent hashing
14//! - [`memory`] - Allocators for performance-critical paths (arenas, pools)
15//! - [`mvcc`] - Version chains for snapshot isolation
16//! - [`utils`] - Hashing, error types, and other helpers
17
18pub mod collections;
19pub mod memory;
20pub mod mvcc;
21pub mod types;
22pub mod utils;
23
24// The types you'll use most often
25pub use mvcc::{Version, VersionChain, VersionInfo};
26pub use types::{EdgeId, EpochId, LogicalType, NodeId, PropertyKey, Timestamp, TxId, Value};
27pub use utils::error::{Error, Result};
28
29// Tiered storage types (feature-gated)
30#[cfg(feature = "tiered-storage")]
31pub use mvcc::{ColdVersionRef, HotVersionRef, OptionalEpochId, VersionIndex, VersionRef};