reclone 0.1.3

Simple utility library for creating a new scope with a set of cloned variables
Documentation
  • Coverage
  • 100%
    2 out of 2 items documented1 out of 1 items with examples
  • Size
  • Source code size: 4.37 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 530.13 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 8s Average build duration of successful builds.
  • all releases: 8s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • KronsyC

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
        }
    }
}