macro_rules! hn { ($($tt:tt)+) => { ... }; }
Expand description
Declare a mutable clone-move event handler.
The macro input is a closure with optional clone-move variables, internally it uses clmv! so
the input is the same syntax.
§Examples
The example declares an event handler for the on_click property.
on_click = hn!(|_| {
println!("Clicked!");
});The closure input is &ClickArgs for this property. Note that
if you want to use the event args you must annotate the input type, the context type is inferred.
on_click = hn!(|args: &ClickArgs| {
println!("Clicked {}!", args.click_count);
});Internally the clmv! macro is used so you can clone-move variables into the handler.
let foo = var(0);
// ..
on_click = hn!(foo, |args: &ClickArgs| {
foo.set(args.click_count);
});
// can still use after:
let bar = foo.map(|c| formatx!("click_count: {c}"));
In the example above only a clone of foo is moved into the handler. Note that handlers always capture by move, if foo was not
listed in the clone-move section it would not be available after the handler is created. See clmv! for details.