gstore
Global state management for GTK apps in redux style.
A State can be any kind of data structure an application is based on. For a 'counter' app it might be a struct with a single u32 field. Actions are enums which represent the possible features of the app affecting the state.
Usage
extern crate gstore;
use *;
use *;
// slice.rs
// -----------------------------------------------------------------
// define a slice
slice!
// define a reducer on that slice
// define a selector for your slice (the state is the Root state)
// define functions for convenient action dispatching
// store.rs
// -----------------------------------------------------------------
// combine slices in your store
store!
// window.rs
// -----------------------------------------------------------------
// define window component
use_state!
Documentation
Please check out the rust doc: https://docs.rs/gstore/latest/gstore.
Implementation
gstore works in the ui thread. Asynchronous tasks can be handled in middlewares. To listen to background threads
gstore uses std::sync::mpsc::{Receiver, Sender}
and polls every n (100) milliseconds for changes, thus the UI thread
is never blocked. I think this is not a good approach. Please feel free to contribute
License
gstore is distributed under the terms of the MIT license. See LICENSE for details.
Acknowledgements
Dan Abramov eveyone who invented/contributes to Redux: https://redux.js.org/.
Thanks for inventing redux.