You are not alone. Though in my case I wanted to remove copies when safe and it seemed like seq wrapped in objects always triggered copies.
Anyway, relevant issues: * Return by let/const values [#6793](https://github.com/nim-lang/Nim/issues/6793) * Distinguish let/var in assignment overload [#6348](https://github.com/nim-lang/Nim/issues/6348) Blog posts: * [Writetracking](https://nim-lang.org/araq/writetracking.html) * [Destructors](https://nim-lang.org/araq/destructors.html) * [Destructors followup](https://github.com/nim-lang/Nim/wiki/Destructors)