Why It Fits
選ぶ理由
- GC なしでメモリ安全(所有権・借用)
- C++ 並みの実行性能
- データ競合をコンパイル時に防ぐ
Language Profile
Graydon Hoare / Mozilla / 2010年(1.0 は 2015年)登場
所有権モデルで「メモリ安全」と「高速」を GC なしで両立するシステム言語。学習は難しいが安全性と性能が要る基盤で評価が高い。
Specifications
Introducing
Decision Guide
採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。
Why It Fits
Trade-offs
Best Fit
Deep Dive
Rust は Mozilla が支援して開発され、2015 年に 1.0 が公開されたシステムプログラミング言語です。狙いは明確で、「C++ 並みの性能」と「メモリ安全」を両立させることでした。多くの言語はガベージコレクション(GC)でメモリ安全を確保しますが、その分だけ実行時のオーバーヘッドが生じます。Rust は GC を持たず、安全性をコンパイル時のチェックで実現する点が最大の特徴です。
Rust の中心にあるのが所有権(ownership)モデルです。値には必ず一つの所有者がいて、所有者がスコープを抜けるとメモリが解放されます。値を貸し出す(借用する)際も、「書き換え可能な参照は同時に一つだけ」といった規則をコンパイラが検証します。
この仕組みにより、データ競合や解放済みメモリへのアクセスといったバグを、実行する前にコンパイルエラーとして弾けます。安全性が実行時ではなくビルド時に保証されるわけです。
GC がないため、リアルタイム性が求められる領域でも予測しやすい性能を出せます。
fn main() {
let s = String::from("hello");
let r = &s; // 借用(読み取り専用の参照)
println!("{} {}", s, r); // 所有権は s のまま。両方使える
}
Language Decision
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
システム / 低レイヤ
型付け: 静的・強い型付け / 実行方式: コンパイル(ネイティブ) / パラダイム: マルチパラダイム(所有権 + 関数 + OOP 風)
C++ 並みの実行性能
学習が難しい(所有権・ライフタイム)
First Step
fn main() {
println!("Hello, World!");
}公式ドキュメント