所有権このガイドはRustの所有権システムの3つの解説の1つ目です。これはRustの最も独特で注目されている機能です。Rust開発者はそれについて高度に精通しておくべきです。所有権こそはRustがその最大の目標、メモリ安全性を得るための方法です。そこにはいくつかの別個の概念があり、各概念が独自の章を持ちます。「ライフタイム」それらの3つの章は関連していて、それらは順番に並んでいます。所有権システムを完全に理解するためには、3つ全てを必要とするでしょう。詳細に入る前に、所有権システムについての2つの重要な注意があります。Rustは安全性とスピードに焦点を合わせます。Rustはそれらの目標を、様々な「ゼロコスト抽象化」を通じて成し遂げます。それは、Rustでは抽象化を機能させるためのコストをできる限り小さくすることを意味します。所有権システムはゼロコスト抽象化の主な例です。コンパイル時に行われます。それらのどの機能に対しても実行時のコストは全く掛かりません。このシステムはあるコストを持ちます。多くのRust入門者は、私たちが「借用チェッカとの戦い」と呼ぶものを経験します。そこではRustコンパイラが、開発者が正しいと考えるプログラムをコンパイルすることを拒絶します。所有権がどのように機能するのかについてのプログラマのメンタルモデルがRustの実装する実際のルールにマッチしないため、これはしばしば起きます。よいニュースがあります。経験豊富なRustの開発者は次のことを報告します。それは、所有権システムのルールと共にしばらく仕事をすれば、借用チェッカと戦うことは次第に少なくなっていく、というものです。それを念頭に置いて、所有権について学びましょう。それは、束縛されているものの「所有権を持つ」ということです。これは束縛がスコープから外れるとき、Rustは束縛されているリソースを解放するだろうということを意味します。