Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 

Stores

Reducable stores inspired by Redux

[dependencies]
stores = "0.1.0"
use stores::*;

#[derive(Default,Debug)]
struct Counter {
    v: u32,
}

enum Action {
    Increment,
    Decrement,
    Nothing,
}

impl Reduceable<Action> for Counter {
    fn reduce(state: State<Self>, action: &Action) -> State<Self> {
        match action {
            Action::Increment => {
                let prev = state.lock();
                State::new(Counter{
                    v:prev.v+1,
                    ..*prev
                })
            },
            Action::Decrement => {
                let prev = state.lock();
                State::new(Counter{
                    v:prev.v-1,
                    ..*prev
                })
            },
            _ => state
        }
    }
}

fn main() {
    let mut r = Store::<Counter, Action>::get().lock();
    r.watch(|state|{
        println!("{:?}", state.lock());
    });
    r.dispatch(&Action::Increment);
    r.dispatch(&Action::Decrement);
    r.dispatch(&Action::Nothing);
}

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in stores by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

a reduceable store for Rust

Resources

License

Releases

No releases published

Packages

No packages published

Languages