Rust gotcha I haven't seen before: you can't move out of a vec by index, even if you own the vec. This is because it'd leave the vec in a bad state: you need .remove() or .pop() instead.