Selective Closure Capture in Rust
Written — Updated
- Sometimes in Rust you may have a closure that needs to move some values but not others. If all the values satisfy the
Copythis 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.
let threads = vec![; thread::scope .unwrap();, ]
- This is done by making it a
moveclosure, and rebinding the variables that we want to borrow as references.
Thanks for reading! If you have any questions or comments, please send me a note on Twitter. And if you enjoyed this, I also have a newsletter where I write about tech thoughts, interesting things I've read, and project updates each Thursday.