amethystate-core 0.21.0

Internal crate for amethystate, not intended for direct use
Documentation

amethystate

Crates.io Docs.rs CI License: MIT MSRV

A state manager for Rust applications.

amethystate is a state manager for Rust applications: state is declared as an ordinary struct, its fields are reactive, and they outlive the program.

Features

  • Struct-defined state — one attribute turns a struct's fields into persisted reactive ones, with defaults, subscriptions, and interceptors that can refuse a write
  • Runtime-defined keys — a map entry or a Kv path gets the same subscriptions, interceptors and durability as a declared field
  • Read and write every frame — writes are buffered and batched, reads answer from memory
  • Durable when it matters — durable() on a field, a map or a Kv path returns only once the value is on disk, for the writes that must not sit in a buffer
  • Behaviour you choose — which engine holds the state, when a write reaches the disk, what a field does with a value that will not read, what a new version does to an old file
  • Migrations — explicit versions, run at startup; drift is logged
  • Three backends, five formats — redb, sqlite, and text as json/toml/ron; text files reload on external edits
  • Integrations — Tauri (+TS bindings), Leptos, Dioxus, Yew, GPUI, windows-reactor, egui/iced/ratatui
  • Tracing — structured events, each write tagged with its source struct
use amethystate::{StoreBuilder, amethystate};

#[amethystate(prefix = "network")]
pub struct NetworkState {
    #[amestate(default = "127.0.0.1".to_string())]
    pub host: String,

    #[amestate(default = 8080u16)]
    pub port: u16,
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let store = StoreBuilder::new("./app").build()?;
    let state = NetworkState::new_with(&store)?;

    let _sub = state.port().subscribe(|port| println!("port → {port}"));

    state.port().set(9090)?;

    Ok(())
}

See the book for full documentation — concepts, migrations, and per-framework integration guides.

Compatibility

The minimum supported Rust version (MSRV) for amethystate is 1.90.