極限のパフォーマンスとメモリ安全性。学習コスト高
速さと安全性を両立する、最難関の言語
所有権システムRustの独自機能。メモリの確保と解放をコンパイラが自動検証し、GCなしでメモリ安全性を保証する仕組みという独自機能によりC/C++と同等の速度を持ちながらメモリ安全性を保証。 ガベージコレクタを持たず実行時オーバーヘッドがほぼゼロ。学習コストは非常に高いが使いこなせれば最強の言語の一つ。
組み込みシステム・OS開発:メモリ制約が厳しいデバイスに最適。Linuxカーネルの一部もRustで書かれ始めている。
WebAssembly(Wasm):ブラウザ上で高速なネイティブコードを動かす仕組み。FigmaのレンダリングエンジンはRust製。
ゲームエンジン・グラフィクス:フレームレートが要求される処理。Bevy(Rust製ゲームエンジン)などが注目されている。
暗号・セキュリティ:メモリ安全性が必須な暗号処理ライブラリ。Cloudflare WorkersのランタイムもRust製。
| 観点 | Rust | Go | C/C++ |
|---|---|---|---|
| 実行速度 | C/C++同等(最速) | 速い | 最速 |
| メモリ安全性 | コンパイラが保証 | GCで管理 | 手動管理(危険) |
| 学習コスト | 非常に高い | 低め | 高い |
| 開発スピード | 遅め | 速い | 遅め |
| 向いている場面 | 組み込み・Wasm・OS | 高トラフィックAPI | OS・ドライバ |
選ぶ理由:
C/C++の置き換えとして「速くて安全」が必要な場面。メモリリークやバッファオーバーフローをコンパイル時に防げる。長期運用するシステムの信頼性が上がる。
選ばない理由:
Web・AI案件のPoCには絶対に向かない。所有権・借用の概念習得に数ヶ月必要。チームにRustが書ける人材を確保することが難しい。
パッケージマネージャ:cargo(標準)
主要フレームワーク:
主要ライブラリ:
ランタイム:
Hello World
fn main() { println!("Hello"); }
所有権と借用
let s = String::from("hi");
let r = &s; // 借用(不変参照)
println!("{}", r);
Result と ? 演算子
fn read(path: &str) -> Result<String, io::Error> {
let s = std::fs::read_to_string(path)?;
Ok(s)
}
非同期(async/await + Tokio)
#[tokio::main]
async fn main() {
let data = reqwest::get("https://...").await?.text().await?;
}
初級(目安: 〜2-3ヶ月)
中級(目安: 〜3-6ヶ月)
上級(目安: 〜6ヶ月+)