Closures don’t implement Clone… yet.

Option 2: (the stable way) You can do the painful act of desugaring closures yourself. (basically, creating structs that implement traits like Fn/FnMut/FnOnce. By the way, you’ll also need to create your own versions of the Fn/FnMut/FnOnce (or at least just Fn if you don’t need the others) since you cannot impl the built-in ones on stable. Ouch)

Closures don’t implement Debug

Option 1: Make Debug impls that don’t require debuggable closures. I did that in this playground link.

(note: that sample overflows the heap when run. I assume this is due to contortions made to minimize the original code, so I haven’t bothered looking into it yet)

Option 2: Make debuggable closures. Hm, looks like I get to post this link again. Maybe I should turn it into a crate?: Make an arbitrary value Debug

Option 3: Don’t bother trying to debug them. (because now that I think about it you probably only added that println that for the purposes of example. )