Rustとは
Rustは、ネイティブコードの高速さとメモリ安全性を両立することを目指すプログラミング言語です。Webサーバー、CLIツール、組み込み、ゲーム、WebAssemblyなどで利用できます。
- 所有権の仕組みで、解放済みメモリの利用などをコンパイル時に防ぐ
- 型を明示しつつ、型推論で読みやすく書ける
- Cargoがビルド、依存関係、テストをまとめて管理する
Rustは「エラーをなくす魔法」ではありません。安全でない可能性をコンパイラーが知らせてくれるので、指摘を読みながら設計を改善する言語です。
基本文法とデータ型
変数、条件分岐、繰り返し、関数、文字列、数値など、Rustの基本を順番に学びます。詳しいコード例は変数とデータ型の講座にまとめています。
fn add(left: i32, right: i32) -> i32 {
left + right
}
fn main() {
let total = add(12, 8);
println!("合計: {total}");
}合計: 20所有権と借用
Rustを学ぶうえで特に重要な所有権、move、参照、可変借用を扱います。まず所有権とはで値の管理者を理解し、次に借用と参照へ進みましょう。
構造体とメソッド
複数の値をまとめる構造体にメソッドを実装すると、データとその操作をひとまとまりにできます。列挙型とコレクションは列挙型とコレクションの講座で詳しく扱います。
struct Product { name: String, price: u32 }
impl Product {
fn discounted_price(&self, percent: u32) -> u32 {
self.price * (100 - percent) / 100
}
}
fn main() {
let book = Product { name: String::from("Rust本"), price: 3000 };
println!("{}: {}円", book.name, book.discounted_price(10));
}Rust本: 2700円OptionとResult
値がない状態をOption<T>、失敗する可能性をResult<T, E>で表します。Resultによるエラー処理では、match、unwrap_or、?演算子を使って安全に処理する方法を解説します。
失敗する可能性を型で表し、呼び出し側が成功と失敗を選べるようにします。エラーを無視するのではなく、処理の一部として設計します。
次に学ぶこと
各講座を読み終えたら、Rust練習問題で確認し、Cargoとテストを使ってコードを改善しましょう。その先は、ファイル入出力、コマンドライン引数、Web API、非同期処理、WebAssemblyなどから目的に合うテーマを選びます。