C++は、代入/コンストラクタがmove系とcopy系で原理的には好き勝手にプログラム
できるので、バグが出た時にプログラムの流れを追うためにはmoveとcopyのどちらが
呼び出されているかプログラマがコードから明確に区別ができないと困るね。
その点、デフォルトmoveで、xxx.clone()としない限りは複製されないRustの
設計思想はそれはそれで便利と言えるかな。
どちらが優れているかは一概には分からないかも知れないけれども、デバッグ
時の追いやすさの観点からすればRust流の方が良いかな。