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>
}
}