yes, Nim has move semantics, but takes care of you more than c++ does.
for example, if you use an object that was previously moved, you dont get garbage, the compiler turns the first move into a copy (and tells you)
the relevant docs are here: https://nim-lang.org/docs/destructors.html