Hm... Keeping them separated is vaguely motivated by not having unnecessary memory accesses.

This is purely baseless speculation, but:
- If I make a copy first, and then map over that again, that's iterating twice over the same memory segment.
- If instead I iterate over the source, and directly collect the mapped values in an already preallocated target, that's just one iteration that might even get vectorized in the future because no aliasing is happening.