Sometimes in Rust you may have a closure that needs to move some values but not others. If all the values satisfy the Copy this is easy, but that it usually not the case.
Sometimes we need to move some values into a closure, but want to borrow others.
You can solve this problem by creating new bindings for the by-reference values, so that the closure moves the references instead of the original value. It's not pretty but it works well.