4 releases
0.1.3 | Oct 20, 2024 |
---|---|
0.1.2 | Oct 20, 2024 |
0.1.1 | Oct 20, 2024 |
0.1.0 | Oct 20, 2024 |
#145 in No standard library
5KB
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
}
}
}