Rust について気付いた事をメモ。
エラーと警告
[dead_code] 未使用のアイテム
[unused_must_use] 必須使用値の無視
[error] キャプチャ変数の流出
[error] HRTB の機能制限
[error] HRTB の機能制限 × GAT
[error] ライフタイムの不足
[error] ライフタイムの不足 × クロージャ
[error] ライフタイムの不足 × サブタイプ
[error] ライフタイムの不足 × 再借用
[error] 定数式でのジェネリクス定数による計算
[error] 汎用的でない呼出可能型
[E0015] const 文脈での非 const 関数
[E0119] トレイト実装の衝突
[E0207] 実装を構成しないジェネリクスパラメタ
[E0210] 孤児ルールに違反した型パラメタ
[E0275] トレイト確認の無限再帰
[E0307] self に使えない型
[E0308] 型の不一致
[E0367] Drop 実装の特殊化
[E0379] トレイトでの const 関数
[E0382] ムーブ済の変数へのアクセス
[E0499] 可変参照の重複
[E0499] NLL の偽陽性 × GAT
[E0502] 不変参照と可変参照の同時使用
[E0503] 可変参照中の値の使用
[E0505] 参照中の変数の移動
[E0506] 参照中の変数への書込
[E0512] transumute でのサイズの不一致
[E0515] 戻り値にできない参照
[E0521] 参照引数の流出
[E0521] 参照引数の流出 × サブタイプ
[E0525] クロージャのトレイト不適合
[E0562] impl 抽象化の未対応箇所での使用
[E0597] 参照中の参照先の破棄
[E0597] HRTB の機能制限
[E0597] HRTB の機能制限 × GAT
[E0599] 無効なメソッドの呼出
[E0658] '_' によるジェネリクス定数の推論
[E0658] dyn 型のアップキャスト
[E0716] 一時的な値の参照中の破棄
Drop トレイトのライフタイムへの影響
ライフタイムの延長
借用チェッカーの制限
標準ライブラリ
bool から Option への変換
From と Into
Iterator の各種メソッド
Iterator::fuse と FusedIterator
Iterator::sum と Iterator::product
Option の各種メソッド
Option や Result と Iterator
RangeBounds と Iterator
Vec::swap_remove
スライスの分割と split_at_mut 系の関数
セットやマップからの検索と Borrow トレイト
マップの entry メソッド
意図的なパニック
内部可変性のある型
内部可変性と get_mut, from_mut 系の関数
言語仕様
? 演算子の使いどころ
? 演算子とエラー型変換
Deref 型強制
HRTB (Higher-Rank Trait Bounds)
Sized トレイト
ZST (Zero Sized Type)
dyn 型の実装
main 関数の戻り値
type エイリアス
タプル形式での初期化
メソッド呼出と型変換
メソッド名の衝突と解決
空のタプル (ユニット)
関連型
組込型の特権/self への型指定
組込型の特権/アンサイズ
孤児ルール
再借用
参照型へのトレイト実装
条件付きコンパイル
添字アクセス
慣習
macro_rules での入れ子ルールの慣習
スマートポインタまわりの慣習
HowTo
Extension Trait パターン
Lending Iterator パターン
Newtype パターン
Newtype パターンと参照型の変換
Sealed Trait パターン
Singleton パターン
Voldemort パターン
cargo test での対象の指定
cargo fmt と rustfmt の調整
dyn 互換の確認
rustdoc での README.md の流用
rustdoc でのサンプルコード
rustdoc でのフィーチャーの表示
rustdoc での関連関数のグループ分け
no_std 環境と std 環境の両対応
バージョンの切替
マクロによる識別子の導入
マクロの展開結果の確認
ワークスペースの構築
演算子オーバーロードと交換法則
演算子オーバーロードと参照型
自動テストでのコンパイルエラーの確認
自動テストでのコンソール出力
自動テストでの条件付きコンパイル
配列の初期化