|0.1.2||Oct 12, 2017|
|0.1.1||Oct 11, 2017|
|0.1.0||Oct 10, 2017|
8,003 downloads per month
Used in 38 crates (0 directly)
This crate provides a simple token-based store for arbitrary types.
This crate was actually part of wayland-rs initially and extracted. The reason for its existence is the way these crates are designed, there is strong separation of data vs logic.
token_store works well in such configurations: you have a set of
well-separated modules that need to share data but don't need to access
it conccurently. And also, the modules are not necessarily aware of each
other (and so you can not really use a big fixed struct for storing all
the shared data.
token_store, at initialization each module will store the value it
needs in the store, and keep the tokens internally. It can optionnaly provide
to the outside world tokens to access values that are to be shared.
Then, when each module needs to do its work, it just needs a
and can retrieve with its tokens the data it needs to work on, independently
of what other modules may have stored in.
use token_store::Store; // create a store let mut store = Store::new(); // insert some things in it, you are given tokens let token1 = store.insert(42); // you can store any type as log as it is `Any + 'static` let token2 = store.insert(String::from("I like trains")); // the tokens keep the information of the store type, // as such you don't need any annotation to retrieve a value: store.get_mut(&token2).push_str(", and cars too!");
The retrieved tokens can be cloned and shared as you like between various parts of your code.
The documentation for the master branch is available online.
The documentation for the releases can be found on docs.rs: