macro_rules! wgt_fn { ($fn:path) => { ... }; ($($tt:tt)+) => { ... }; () => { ... }; }
Expand description
Declares a widget function closure.
The output type is a WidgetFn
, the closure is clmv!
.
§Syntax
wgt_fn!(cloned, |_args| Wgt!())
- Clone-move closure, the same syntax asclmv!
you can list the cloned values before the closure.wgt_fn!(path::to::func)
- The macro also accepts unction, the signature must receive the args and return a widget.wgt_fn!()
- An empty call generates theWidgetFn::nil()
value.
§Examples
Declares a basic widget function that ignores the argument and does not capture any value:
wgt_fn!(|_| Wgt! {
on_init = hn!(|_| println!("generated widget init"));
});
The macro is clone-move, meaning you can use the same syntax as clmv!
to capture clones of values:
let moved_var = var('a');
let cloned_var = var('b');
wgt_fn!(cloned_var, |args| {
println!(
"wgt_fn, args: {:?}, moved_var: {}, cloned_var: {}",
args,
moved_var.get(),
cloned_var.get()
);
Wgt!()
});