But whether you can avoid the copy or not depends on the operation, I don't see how e.g. `sorted` can be done without allocations and C++/D's solutions are effectively pointer-based so you pay the costs of wild aliasing. Rust uses its borrow checking to make it safe.
In-place everything is not "back to C land", it's still memory safe. But we can also leverage Nim's DSLs for this and I know you used this in the past too. With a DSL you get to see a much bigger picture and so optimizing the code is easier.
