Rust とはどんな言語か
Rust は「速さ」と「安全性」を両立させることを目指したシステムプログラミング言語です。C や C++ に匹敵する実行速度を持ちながら、メモリ関連のバグの多くをコンパイル時に防いでくれます。ガベージコレクションを持たないのに安全、というのが最大の特長です。
最初のプログラム
Rust には Cargo という優秀なビルドツールが付属しています。プロジェクトの作成から実行まで、すべて Cargo で完結します。
fn main() {
println!("Hello, Rust!");
}
cargo new hello でプロジェクトを作り、cargo run で実行できます。
所有権という考え方
Rust 学習の最大の山場が「所有権(ownership)」です。ルールは3つだけです。
- すべての値は、ただ1つの変数が所有する
- 所有者がスコープを抜けると、値は自動的に破棄される
- 値を別の変数に代入すると、所有権が移動(ムーブ)する
fn main() {
let s1 = String::from("hello");
let s2 = s1; // 所有権が s2 にムーブする
// println!("{}", s1); // ここで s1 は使えない!コンパイルエラー
println!("{}", s2);
}
最初は戸惑いますが、このルールのおかげで「解放済みメモリへのアクセス」のようなバグが原理的に起きなくなります。
借用でデータを貸し出す
所有権を渡さずにデータを使ってもらいたいときは「借用(参照)」を使います。& を付けるだけです。読み取り専用の借用はいくつでも作れますが、書き換え可能な借用(&mut)は同時に1つだけ、というルールがあります。
学習のすすめ方
1. 公式の The Rust Programming Language(通称 The Book)を読む 2. コンパイラのエラーメッセージを丁寧に読む習慣をつける 3. 小さな CLI ツールを作ってみる
Rust のコンパイラはとても親切で、エラーの原因と直し方を具体的に提案してくれます。「コンパイラと対話しながら学ぶ」のが Rust 上達の近道です。