📝In Rust, all types are movable

Rust compiler considers all types movable and this is very common for rust programs. Any fn(self) method relies on move, fn new() -> Self moves result. As of [2021-11-13 Sat], there is no way to opt out from move semantics.

In C++, move constructors need to be implemented separately and must be careful to leave the moved out object in the state valid to call delete. In Rust, move is just a memcopy and is destructive. (Destructive/non-destructive move)

See also