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 |
#115 in No standard library
245 downloads per month
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
}
}
}