Did you see that manual loops didn't optimize to a mempcy? I would expect something like this to optimize to a memcpy:

```rust
for (slot, val) in groups.mut_iter().zip(caps.iter()) {
    *slot = *val;
}
```