Swiftのメモリ管理 ≒ C++のshared_ptr/weak_ptr
Rustのメモリ管理 ≒ C++のauto_ptr(暗黙move, unique_ptrの先代)

Rustのborrowingはauto_ptr::getとほぼ同じ
ただし解放されたものを参照しないようlifetimeの手厚いサポートがある

ARCの方がコーディングは楽だろうけど
Rust方式は渡したものを保持して遅延使用するのか
関数から戻った時点で使い終わってるのかを
言語レベルで扱えたりするから一長一短ではある

まぁSwiftにもクロージャに関しては@escapingがあるけど