counter_redux/
counter_redux.rs

1use rui::*;
2
3#[derive(Clone)]
4enum Action {
5    Increment,
6    Decrement,
7}
8
9struct AppState {
10    count: i32,
11}
12
13impl AppState {
14    fn new() -> Self {
15        AppState { count: 1 }
16    }
17}
18
19fn reduce(state: &mut AppState, action: &Action) {
20    match action {
21        Action::Increment => state.count += 1,
22        Action::Decrement => state.count -= 1,
23    }
24}
25
26fn main() {
27    rui(redux(AppState::new, reduce, |state| {
28        vstack((
29            format!("{}", state.count).padding(Auto),
30            button_a("increment", Action::Increment).padding(Auto),
31            button_a("decrement", Action::Decrement).padding(Auto),
32        ))
33    }));
34}