Function rui::with_cx

source ·
pub fn with_cx<V: View, F: Fn(&Context) -> V + 'static>(f: F) -> impl View
Expand description

Convenience to get the context.

Examples found in repository?
examples/todo_list.rs (lines 18-26)
17
18
19
20
21
22
23
24
25
26
27
fn todo_list(todos: impl Binding<Vec<String>>) -> impl View {
    with_cx(move |cx| {
        let len = todos.with(cx, |todos| todos.len());
        let ids = (0usize..len).collect();

        list(ids, move |id| {
            let id = *id;
            with_cx(move |cx| todos.with(cx, |todos| todos[id].clone()))
        })
    })
}
More examples
Hide additional examples
examples/counter_list.rs (lines 7-21)
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
fn main() {
    rui(state(Counters::default, |counters, cx| {
        vstack((
            list(cx[counters].ids(), move |&i| {
                with_cx(move |cx| {
                    let count = bind(counters, CounterLens(i));
                    hstack((
                        format!("{}", count.get(cx)).padding(Auto),
                        button("increment", move |cx| {
                            *count.get_mut(cx) += 1;
                        })
                        .padding(Auto),
                        button("decrement", move |cx| {
                            *count.get_mut(cx) -= 1;
                        })
                        .padding(Auto),
                        button("remove", move |cx| cx[counters].remove_counter(i)).padding(Auto),
                    ))
                })
            }),
            format!("total: {}", cx[counters].sum_counters()).padding(Auto),
            button("add counter", move |cx| cx[counters].add_counter()).padding(Auto),
        ))
    }));
}