Thanks all for your replies.
@Jehan: your responses are always very informative, thank you ! it is now clear
for me that the {.shallow.} pragma, shallow and shallowCopy calls can do the
job of move (in most cases), and that move is more related to how c++ works.
Just as a side note, I didn't succeed at making my nim code as fast as my rust
version, so I just replaced seqs by warped c++ vectors (with some moves in that
case ) in the hot spots and now the nim version is slightly faster than the
rust version.