📝Rustの基礎文法まとめ.
とりあえずChatGPTで勉強メモ目次を生成したので気になることをつまみ食いで穴埋めしていく.
Rustコーディング規約
コーディングスタイル
- ファイル拡張子はrs.
- 関数と変数は, 🔖snake_case.
- タブではなく、4スペースでインデント
- セミコロン;
基本構文
変数
- let: 変数宣言.
- Rustの変数はデフォルトで📝不変性(immutable)が特徴.
- 並行性や安全性のための仕様選択.
- mut: 📝可変性(mutable)な変数宣言の修飾子. letと併用.
- coust: 定数宣言
データ型
- スカラー型
- 複合型
- タプル型
- 配列型
関数
- fn: 関数定義.
制御フロー
- if文
- アーム: if式の条件式と紐付けられる一連の処理.
- ループ(loop, while, for)
📝所有権(rust)
Rustを代表する目玉機能.
- 📝ガベージコレクションを代替するようなRustを特徴づけるメモリ管理機能.
- 📝C言語のようなメモリ獲得と解放をプログラマが意識しなくてもよい.
- 📝ヒープメモリ、動的なメモリ獲得/解放の課題を解決することが目的.
所有権規則
- Rustの各値は、所有者と呼ばれる変数と対応している。
- いかなる時も所有者は一つである。
- 所有者がスコープから外れたら、値は破棄される。
参照
- 参照:
- アスタリスクで表現する. 参照外しもある.
ムーブ(move)
代入のシンタックスで所有権を移動. 自動コピー.
これはshallow copyのようなもの. deep copyのようなものはclone関数で実施する.
ライフタイム(参照の有効期間)
Rustはスコープの範囲でメモリ獲得とメモリ解放を行う.
C言語ならばmalloc/freeのようなものはスコープやdrop関数をつかう.
借用(Bollowing)
所有権を移動せずに値を使う方法
- 借用: 関数の引数に参照を取ること
- 📝ポインタ(C)のようなもの. 所有権は渡さない.
- 参照と借用 - The Rust Programming Language 日本語版
スライス型
- 所有権のない別のデータ型
- スライスにより、コレクション全体ではなく、 その内の一連の要素を参照することができます.
- スライス型 - The Rust Programming Language 日本語版
構造体と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)