reclone

Crates.ioreclone
lib.rsreclone
version0.1.3
sourcesrc
created_at2024-10-20 17:42:23.211441
updated_at2024-10-20 18:10:38.467089
descriptionSimple utility library for creating a new scope with a set of cloned variables
homepagehttps://github.com/KronsyC/reclone
repository
max_upload_size
id1416395
size4,715
Samir Bioud (KronsyC)

documentation

https://docs.rs/reclone

README

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
        }
    }
}
Commit count: 0

cargo fmt