Rust について気付いた事をメモ。
エラーと警告
[dead_code] 未使用のアイテム
[unused_must_use] 必須使用値の無視
[error] const や static における型推論
[error] キャプチャ変数の流出
[error] HRTB の機能制限
[error] HRTB の機能制限 × GAT
[error] ライフタイムの不足
[error] ライフタイムの不足 × クロージャ
[error] ライフタイムの不足 × サブタイプ
[error] ライフタイムの不足 × 再借用
[error] 定数式でのジェネリクス定数による計算
[error] 汎用的でない呼出可能型
[E0015] const 文脈での非 const 関数
[E0119] トレイト実装の衝突
[E0121] 型推論の未対応箇所での '_' の使用
[E0207] 実装を構成しないジェネリクスパラメタ
[E0210] 孤児ルールに違反した型パラメタ
[E0271] 関連型の不一致
[E0275] トレイト確認の無限再帰
[E0277] トレイト境界への不適合
[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 トレイトのライフタイムへの影響
ライフタイムの延長
借用チェッカーの制限
Miri エラー / ダングリングポインタ
Miri エラー / メモリリーク
Miri エラー / 削除済のアイテムの利用
Miri エラー / 保護されたアイテムの削除
標準ライブラリ
Cow
From と Into
Iterator の各種メソッド
Iterator::fuse と FusedIterator
Iterator::sum と Iterator::product
ManuallyDrop
Option の各種メソッド
Option や Result と Iterator
RangeBounds と Iterator
Vec::swap_remove
bool から Option への変換
leak 系メソッド
スライスの分割と split_at_mut 系の関数
セットやマップからの検索と Borrow トレイト
マップの entry メソッド
意図的なパニック
自己参照型
内部可変型
内部可変型における get_mut, from_mut 系の関数
言語仕様
? 演算子の使いどころ
? 演算子とエラー型変換
Deref 型強制
HRTB (Higher-Rank Trait Bounds)
Sized トレイト
ZST (Zero Sized Type)
derive 属性
dyn 型の実装
main 関数の戻り値
rustdoc の情報不足
type エイリアス
サブタイプと変性
タプル形式での初期化
ポインタの起源
メソッド呼出と型変換
メソッド名の衝突と解決
ライフタイム拡張
暗黙のライフタイム境界
型推論の未対応箇所
空のタプル (ユニット)
関連型
組込型の特権/self への型指定
組込型の特権/アンサイズ
孤児ルール
再借用
参照型へのトレイト実装
条件付きコンパイル
添字アクセス
未定義動作と健全性
HowTo
Extension Trait パターン
Lending Iterator パターン
Miri の使用方法
Newtype パターン
Newtype パターンと参照型の変換
Sealed Trait パターン
Singleton パターン
Voldemort パターン
cargo test での対象の指定
cargo fmt と rustfmt の調整
dyn 互換の確認
rustdoc での README.md の流用
rustdoc でのサンプルコード
rustdoc でのフィーチャーの表示
rustdoc での関連関数のグループ分け
no_std 環境と std 環境の両対応
ナイトリー版での不安定な機能の試用
バージョンの切替
マクロによる識別子の導入
マクロの展開結果の確認
ワークスペースの構築
演算子オーバーロードと交換法則
演算子オーバーロードと参照型
自動テストでのコンパイルエラーの確認
自動テストでのコンソール出力
自動テストでの条件付きコンパイル
配列の初期化
その他
macro_rules での入れ子ルールの慣習
カバレッジ計測とジェネリクス
スマートポインタまわりの慣習