📝Rustの基礎文法まとめ.
とりあえずChatGPTで勉強メモ目次を生成したので気になることをつまみ食いで穴埋めしていく.
Rustコーディング規約
- 関数と変数は, 🔖snake_case.
- 4インデントのタブ.
基本構文
変数
- let: 変数宣言.
- Rustの変数はデフォルトで📝不変性(immutable)が特徴.
- 並行性や安全性のための仕様選択.
- mut: 📝可変性(mutable)な変数宣言の修飾子. letと併用.
- coust: 定数宣言
データ型
- スカラー型
- 複合型
- タプル型
- 配列型
関数
- fn: 関数定義.
制御フロー
- if文
- アーム: if式の条件式と紐付けられる一連の処理.
- ループ(loop, while, for)
📝所有権(rust)
Rustを代表する目玉機能.
- 📝ガベージコレクションを代替するようなRustを特徴づけるメモリ管理機能.
- 📝C言語のようなメモリ獲得と解放をプログラマが意識しなくてもよい.
- 💭メモリリーク/メモリ破壊で定時退社できずに深夜残業突入しまくりの怒りを思い出してRustの所有権を学ぶ(23/09/04)
所有権規則
- Rustの各値は、所有者と呼ばれる変数と対応している。
- いかなる時も所有者は一つである。
- 所有者がスコープから外れたら、値は破棄される。
ライフタイム
Rustはスコープの範囲でメモリ獲得とメモリ解放を行う.
C言語ならばmalloc/freeのようなものはスコープやdrop関数をつかう.
ムーブ
代入のシンタックスで所有権を移動. 自動コピー.
これはshallow copyのようなもの. deep copyのようなものはclone関数で実施する.
参照と借用
📝ポインタ(C)のようなもの. 所有権は渡さない.
スライス型
構造体とEnum
構造体(struct)
列挙型(enum)
RustのEnumは📝代数データ型に近く, 🔖パターンマッチで活躍する.
パターンマッチ(match)
モジュールとクレート
📝Crates
Crates, クレートと読む. Rustソースコードをあつめたもの.
- バイナリクレート: 実行可能ファイル.
- ライブラリクレート: ライブラリ.
- 外部クレート: 自プロジェクトの外のクレート.
- crates.io: https://crates.io/
エラーハンドリング
- Option型
- 📝Result型
- panicとrecover
コレクション
- ベクトル(Vectors)
- 文字列(Strings)
- ハッシュマップ(HashMaps)
ジェネリクスとトレイト
- ジェネリクス(Generics)
- トレイト(Traits)
非同期プログラミング
- Futureとasync/await
- 非同期I/O
その他の高度なトピック
- マクロ
- FFI(Foreign Function Interface)