Skip to content

counter

1 つの状態を、3 つのハンドラが順に借りる。

3 つのハンドラは、それぞれ count を &mut で順に取ります。クローンはありませんし、'static なものもありません。クロージャは自分を作ったパスの中で走るので、借用チェッカは普通のスコープだけで納得します。

外側の <View> の align="center" justify="center" が、この塊を中央に置いています。素の egui でこれをやるには、まず塊を測り、その周りの空間を手で確保することになります。

自分で動かす ​

sh
cargo run -p counter
trunk serve --config examples/counter/Trunk.toml

ソースは examples/counter/src/lib.rs です。

rust
use egui_reactor::prelude::*;
use egui_reactor_elements::prelude::*;

#[component]
pub fn App(cx: &mut Cx) {
    let mut count = use_state(cx, || 0i32);

    rsx! {
        <View direction="column" align="center" justify="center" gap={12} grow={1.0}>
            <Text size={32.0} strong>{format!("{}", *count)}</Text>
            <View direction="row" gap={8}>
                <Button on_click={|| *count -= 1}>"-"</Button>
                <Button on_click={|| *count = 0}>"reset"</Button>
                <Button on_click={|| *count += 1}>"+"</Button>
            </View>
        </View>
    }
}

MIT または Apache-2.0 ライセンスで公開しています。