Rust について気付いた事をメモ。
エラーと警告
[dead_code] 未使用のアイテム
[unused_must_use] 必須使用値の無視
[error] キャプチャ変数の流出
[error] HRTB の機能制限
[error] HRTB の機能制限 × GAT
[error] ライフタイムの不足
[error] ライフタイムの不足 × クロージャ
[error] ライフタイムの不足 × サブタイプ
[error] ライフタイムの不足 × 再借用
[error] 汎用的でない呼出可能型
[E0119] トレイト実装の衝突
[E0207] 実装を構成しないジェネリクスパラメタ
[E0275] トレイト確認の無限再帰
[E0210] 孤児ルールに違反した型パラメタ
[E0307] self に使えない型
[E0308] 型の不一致
[E0367] Drop 実装の特殊化
[E0379] トレイトでの const 関数
[E0382] ムーブ済の変数へのアクセス
[E0499] 可変参照の重複
[E0499] NLL の偽陽性 × GAT
[E0502] 不変参照と可変参照の同時使用
[E0503] 可変借用中の使用
[E0515] 戻り値にできない参照
[E0521] 参照引数の流出
[E0521] 参照引数の流出 × サブタイプ
[E0525] クロージャのトレイト不適合
[E0562] impl 抽象化の未対応箇所での使用
[E0597] 参照中の参照先の破棄
[E0597] HRTB の機能制限
[E0597] HRTB の機能制限 × GAT
[E0599] 無効なメソッドの呼出
[E0658] const 文脈での for ループ
[E0658] dyn 型のアップキャスト
[E0716] 参照中の中間値の破棄
参照の延長
借用チェッカーの制限
標準ライブラリ
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 への型指定
組込型の特権/アンサイズ
孤児ルール
再借用
参照型へのトレイト実装
条件付きコンパイル
添字アクセス
慣習
スマートポインタまわりの慣習
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 環境の両対応
バージョンの切替
マクロによる識別子の導入
マクロの展開結果の確認
ワークスペースの構築
演算子オーバーロードと交換法則
演算子オーバーロードと参照型
自動テストでのコンパイルエラーの確認
自動テストでのコンソール出力
配列の初期化