When writing event-driven code using callbacks (e.g. for Wayland), I often have code that has to clone reference counted objects with interior mutability into closures. I end up with code like the following.
let thing_c = thing.clone();
let other_thing_c = other_thing.clone();
fn_taking_cb(move || {
    // use `other_thing_c`
    let thing_c2 = thing_c.clone();
    another_cb_fn(move || {
        // use `thing_c2`
    });
    // use `thing_c`.
});
// use `thing`, `other_thing`.
which gets verbose (plus you have to think of names for all the clones).
A way of getting round the naming issue is using blocks:
fn_taking_cb({
    let thing = thing.clone();
    let other_thing = other_thing.clone();
    move || {
        // use `other_thing`
        another_cb_fn({
            let thing = thing.clone();
            move || {
                // use `thing`
            }
        });
        // use `thing`.
    }
});
// use `thing`, `other_thing`
but this requires an extra level of nesting of blocks.
I saw a neat solution to this problem in the gtk-rs bindings. They have a macro that does this cloning for you, so you end up with code like:
fn_taking_cb(clone_for_closure!(thing, other_thing, move || {
    // use `other_thing`.
    another_cb_fn(clone_for_closure!(thing, move || {
        // use `thing`.
    }));
    // use `thing`.
}));
// use `thing`, `other_thing`.
I wonder if this pattern is ubiquitous enough to warrant some support in the standard library (with bikeshedded name)?
EDIT Oh I found an open RFC issue for this: Officially implement a clone macro · Issue #2022 · rust-lang/rfcs · GitHub.