&i32: Copy
みたいなの、言われてみると確かに〜〜となるんだよな。たぶん驚きの根本的な原因は C++ 形式の参照に慣れてしまっているところなのかもしれないけど
C++ の参照、ポインタの syntax sugar っぽいフリをしているが「参照の参照」みたいなの持てないし1段階の参照しか持てない (cf. reference collapsing) ので first-class な型構築子ではないというか。
その点 Rust の参照は好き勝手ネストできるしそれぞれがちゃんと first-class な型として扱われる
あとは C++ の参照は参照先の変更 (つまり参照変数そのものに対する書き換え) ができないけど Rust では &mut 変数の書き換えによって参照先の変更ができるとか。
https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
std::reference_wrapper<T> (C++) のことを思い出しています……