attuned_store/
lib.rs

1//! # attuned-store
2//!
3//! Storage traits and in-memory backend for Attuned.
4//!
5//! This crate provides:
6//! - [`StateStore`] trait defining the storage contract
7//! - [`MemoryStore`] in-memory implementation for single-process apps
8//!
9//! ## Example
10//!
11//! ```rust
12//! use attuned_store::{StateStore, MemoryStore, MemoryStoreConfig};
13//! use attuned_core::{StateSnapshot, Source};
14//!
15//! #[tokio::main]
16//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
17//!     let store = MemoryStore::new(MemoryStoreConfig::default());
18//!
19//!     let snapshot = StateSnapshot::builder()
20//!         .user_id("user_123")
21//!         .source(Source::SelfReport)
22//!         .axis("warmth", 0.7)
23//!         .build()?;
24//!
25//!     store.upsert_latest(snapshot).await?;
26//!
27//!     let retrieved = store.get_latest("user_123").await?;
28//!     assert!(retrieved.is_some());
29//!
30//!     Ok(())
31//! }
32//! ```
33
34#![deny(missing_docs)]
35
36mod error;
37mod memory;
38mod traits;
39
40pub use error::StoreError;
41pub use memory::{MemoryStore, MemoryStoreConfig};
42pub use traits::StateStore;