App JSON Settings
Tiny typed JSON settings persistence for Rust applications.
app-json-settings stores one Serde-serializable Rust value as a JSON settings
file. It is designed for small GUI, CLI, and local-first apps that want typed
settings without hand-written path and JSON boilerplate.
Overview
The crate focuses on a small API:
- choose a settings storage root
- optionally choose a file name
- load, save, or update one typed settings value
It intentionally stays JSON-focused and does not try to become a database, preference service, or general configuration framework.
Why / when
Use this crate when your application has a small settings struct and you want:
- first-run defaults with
load_or_default() - read-modify-write updates with
update() - atomic save by default, with direct save still available
- OS-default config locations for desktop apps — with a clear error, not a
silent fallback, if that location can't be resolved (
with_root_dir()covers the exception) - caller-provided storage roots for tests, portable mode, or sandboxed hosts
- optional Pure UWP local-folder resolution without a default
windowsdependency
Quick start
[]
= { = "1", = ["derive"] }
= "2"
use ConfigManager;
Features / design notes
- Default build depends only on
serdeandserde_json. ConfigManager::for_app()is the recommended desktop constructor, and reports storage-root resolution failure instead of silently falling back to the working directory.ConfigManager::with_root_dir()is the sandbox-friendly storage seam.ConfigManager::try_with_filename()validates plain file names.SaveMode::Atomicis the default save strategy. It preserves the previous file's Unix permission bits across replacement, and creates new files owner-only (0600).with_filename()remains available for v2.x compatibility.- The optional
uwpfeature enablesat_uwp_local_folder()on Windows. - Requires Rust 1.85.0 or newer, verified in CI.
Examples
A small executable example set is available under examples/:
More detail
Full documentation is maintained under docs/src and can be read with mdBook.
- Getting started — introduction, quick start, executable examples
- Using the crate — storage model, save behavior, API guide, error handling, operational contract, platform behavior, Pure UWP support, migration to v2
- Contributing and maintaining — testing guide, maintainer notes
Acknowledgements
Depends on serde and serde_json.