Rust
メモリ安全性とパフォーマンスを両立する、GC なしのシステムプログラミング言語
低レベルメモリ管理
Rust とは
Rust は、Mozilla が 2010 年に公開したシステムプログラミング言語で、所有権システムによりガベージコレクション (GC) なしでメモリ安全性を保証する。C/C++ に匹敵するパフォーマンスと、データ競合をコンパイル時に防止する安全性を両立する。Stack Overflow の「最も愛されている言語」で 8 年連続 1 位。
所有権システム
fn main() {
let s1 = String::from("hello");
let s2 = s1; // s1 の所有権が s2 に移動 (ムーブ)
// println!("{}", s1); // ❌ コンパイルエラー: s1 はもう使えない
println!("{}", s2); // ✅ OK
}
3 つのルール:
- 各値には所有者が 1 つだけ
- 所有者がスコープを抜けると値は自動的に解放
- 所有権は移動 (ムーブ) または借用 (ボロー) できる
借用 (Borrowing)
fn print_length(s: &String) { // 不変参照 (借用)
println!("Length: {}", s.len());
}
fn main() {
let s = String::from("hello");
print_length(&s); // 借用: 所有権は移動しない
println!("{}", s); // ✅ まだ使える
}
Go / TypeScript との比較
| 観点 | Rust | Go | TypeScript |
|---|---|---|---|
| メモリ管理 | 所有権 (GC なし) | GC | GC (V8) |
| パフォーマンス | 最高 (ネイティブ) | 高い (ネイティブ) | 中程度 (JIT) |
| 安全性 | コンパイル時にメモリ安全性保証 | ランタイムで検出 | ランタイムで検出 |
| 学習コスト | 高い | 低い | 中程度 |
| ビルド時間 | 遅い | 速い | 速い (トランスパイル) |
| 用途 | CLI、WebAssembly、組み込み | Web サーバー、CLI | Web アプリ |
Rust で書かれたツール
| ツール | 用途 | 置き換え対象 |
|---|---|---|
| SWC | TypeScript トランスパイラ | Babel (20 倍高速) |
| esbuild | バンドラー (Go 製だが Rust 版も) | webpack |
| Turbopack | Next.js のバンドラー | webpack |
| Biome | Linter + Formatter | ESLint + Prettier |
| ripgrep (rg) | テキスト検索 | grep |
| fd | ファイル検索 | find |
Lambda での Rust
Rust は Lambda のカスタムランタイム (provided.al2023) で実行する。コールドスタートが極めて速い (10〜50 ミリ秒)。
use lambda_runtime::{service_fn, LambdaEvent, Error};
use serde_json::Value;
async fn handler(event: LambdaEvent<Value>) -> Result<Value, Error> {
Ok(serde_json::json!({ "message": "Hello from Rust" }))
}
#[tokio::main]
async fn main() -> Result<(), Error> {
lambda_runtime::run(service_fn(handler)).await
}
WebAssembly (Wasm)
Rust は WebAssembly のコンパイルターゲットとして最も成熟している。ブラウザで C/C++ 並みのパフォーマンスが必要な処理 (画像処理、暗号化) に使われる。
体系的に学ぶなら関連書籍を参照してほしい。