5 个版本

0.1.0 2019 年 11 月 5 日
0.0.4 2019 年 11 月 4 日
0.0.3 2019 年 11 月 4 日
0.0.2 2019 年 11 月 4 日
0.0.1 2019 年 11 月 4 日

#20 in #redux

MIT/Apache

7KB
77 代码行数(不包括注释)

商店

受 Redux 启发的可减少商店

[dependencies]
stores = "0.1.0"
#[derive(Default)]
struct Counter {
    v: u32,
}

enum Action {
    Increment,
    Decrement,
    Nothing,
}

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

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

许可证

本项目受以下任一许可证的许可:

任您选择。

贡献

除非您明确表示,否则您提交给 stores 的任何有意贡献,如 Apache-2.0 许可证中定义的,应按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~170KB