【らすと】

Rust とは?

最終更新:
💡 データの持ち主と借り方を、コンパイル時に確かめる言語

所有権や借用の規則をコンパイル時に確認し、メモリを安全に扱うことを重視したプログラミング言語。メモリ管理に常時動くGCを必須としない。unsafeを使う部分には、実装者が安全性を確認する責任がある。

📌 このページのポイント
Stringの所有権を a から b へ移す変数 a移した後は使えない変数 b新しい所有者let b = a;文字列データの持ち主が変わる整数などCopyの型は、コピーされる
String型の文字列を代入する例。矢印は所有権の移動を示し、文字列の中身をコピーする意味ではありません。移動後のaの利用はコンパイル時に拒否されます。借用は所有権を移さない別の使い方です。
ひよこ ひよこ
Rustの特徴は何?
ペンギン先生 ペンギン先生
メモリの安全性を重視し、所有権や借用の規則をコンパイル時に確かめる言語だよ。動いてからメモリの誤った使い方を見つけるだけでなく、規則に合わない使い方を実行前に拒否するんだ
ひよこ ひよこ
所有権を移すってどういうこと?
ペンギン先生 ペンギン先生
例えばString型の文字列を変数aからbへ代入すると、その文字列の所有権がbへ移る。以後aを使おうとするとコンパイルエラーになるよ。ただし整数などCopyを実装する型はコピーされるので、すべての代入で元の変数が使えなくなるわけではないんだ
ひよこ ひよこ
別の関数で使うだけでも、持ち主を変えるの?
ペンギン先生 ペンギン先生
参照を渡して借りてもらう方法もあるよ。これは所有権を渡さずに使う仕組みで、参照先のデータが有効な間に使うなどの規則を確認する。Stringの所有者が有効な範囲を出ると、そのメモリを解放する仕組みもあるんだ
ひよこ ひよこ
コンパイルできたら、全部安心?
ペンギン先生 ペンギン先生
unsafeでは、通常の安全なRustだけでは許されない操作を扱える。その安全条件は実装者が守る必要があるよ。メモリを安全に扱えることと、処理が意図どおりであることも別なので、テストは必要。速度も処理や実装によるから、常にCやC++と同じとは決めつけられないね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Rust」って出てきたら「データの持ち主と借り方を確かめ、メモリの安全性を重視する言語」と思えればだいたいOK!
📖 おまけ:英語の意味
「Rust」 = プログラミング言語の名前
💬 所有権や借用の規則が特徴だよ。名前から動作速度を決めつけるのではなく、メモリをどう扱う言語なのかを見ると理解しやすいんだ

参考資料

← 用語集にもどる