Whether "move" operation on a stack value is cheap?

That's not entirely true. If you have a non-move closure that uses a capture by value, that value will be moved once into the closure state and then again where it is used, and the closure will be FnOnce. But if that value has a Copy type, it will be captured by reference instead, only copied at the use within the closure, and the closure may be Fn/FnMut.

2 Likes