macro_rules! clones {
(@clones $(,)? mut $obj:ident.$id:ident $( $tail:tt )*) => { ... };
(@clones $(,)? $obj:ident.$id:ident $( $tail:tt )*) => { ... };
(@clones $(,)? mut $id:ident $( $tail:tt )*) => { ... };
(@clones $(,)? $id:ident $( $tail:tt )*) => { ... };
(@clones) => { ... };
($( $tt:tt )*) => { ... };
}
Expand description
A helper macro which can be used to clone a list of variables. Helpful for creating a closure which clone-captures the environment.
ยงExample
let switch = use_state(|| true);
let counter = use_state(|| 0);
let cb = Callback::new({
clones!(self.message, switch, mut counter);
move |delta: i32| {
if (*switch.value()) {
println!("{}", message);
}
counter.set(|c| c + delta);
}
});
This is equivalent to the following:
let switch = use_state(|| true);
let counter = use_state(|| 0);
let cb = Callback::new({
let message = self.message.clone();
let switch = switch.clone();
let mut counter = counter.clone();
move |delta: i32| {
if (*switch.value()) {
println!("{}", message);
}
counter.set(|c| c + delta);
}
});