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
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);
}
许可证
本项目受以下任一许可证的许可:
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任您选择。
贡献
除非您明确表示,否则您提交给 stores 的任何有意贡献,如 Apache-2.0 许可证中定义的,应按上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~170KB