Expand description
§Reclone
Minimal macro library to help with cloning objects into move closures
I’ve found that when building applications, you commonly have a set of Arcs representing
state of some sort, and need to move it into a move closure
This is annoying and leads to code like this:
let foo = ...;
let bar = ...;
let baz = ...;
{
let foo = foo.clone();
let bar = bar.clone();
let baz = baz.clone();
tokio::spawn(async move{
// Use the variables
});
}
Now with reclone, this becomes, in my opinion, a little neater and less repetitive
use reclone::cloned;
let foo = ...;
let bar = ...;
let baz = ...;
cloned!(foo, bar, baz, {
tokio::spawn(async move{
// Use the variables
});
});
If you can’t justify bringing this in as a dependency, you’re welcome to directly inline
the code in your codebase
macro_rules! cloned {
($($var : ident ,)* $scope : block) => {
{
$(
let $var = $var.clone();
)*
$scope
}
}
}
Macros§
- The cloned macro