diff --git a/plugins/store/README.md b/plugins/store/README.md index 0e1eb29a..8296fe02 100644 --- a/plugins/store/README.md +++ b/plugins/store/README.md @@ -59,6 +59,38 @@ const val = await store.get("some-key"); assert(val, { value: 5 }); ``` +## Usage from Rust + +You can also access Stores from Rust, you can create new stores: + +```rust +use tauri_plugin_store::store::StoreBuilder; +use serde_json::json; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_store::Builder::default().build()) + .setup(|app| { + let mut store = StoreBuilder::new(app.handle(), "path/to/store.bin").build(); + + store.insert("a", json!("b")) // note that values must be serd_json::Value to be compatible with JS + }) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} +``` + +As you may have noticed, the Store crated above isn't accessible to the frontend. To interoperate with stores created by JS use the exported `with_store` method: + +```rust +use tauri_plugin_store::with_store; + +let stores = app.state::>(); +let path = PathBuf::from("path/to/the/storefile"); + +with_store(app_handle, stores, path, |store| store.set("a", json!("b"))) +``` + ## Contributing PRs accepted. Please make sure to read the Contributing Guide before making a pull request.