リント
Clippy は、Rust コードでよくある誤りを検出するための lint のコレクションです。一般的に Rust コードに対して実行するのに優れたツールです。また、多数の lint が、最適とはいえないパフォーマンスを引き起こし得るコードパターンに関係しているため、パフォーマンス改善にも役立ちます。
問題の自動検出は手動検出より望ましいため、この本の以降の部分では、Clippy がデフォルトで検出するパフォーマンス上の問題については触れません。
基本
インストール後は、簡単に実行できます。
cargo clippy
パフォーマンス lint の完全な一覧は、lint list にアクセスし、“Perf” 以外の lint グループをすべて選択解除することで確認できます。
パフォーマンス lint の提案は、コードを高速化するだけでなく、通常はよりシンプルでより慣用的なコードにつながるため、頻繁に実行されないコードであっても従う価値があります。
逆に、パフォーマンス以外の lint の提案がパフォーマンスを改善することもあります。たとえば、ptr_arg スタイル lint は、&mut Vec<T> 引数を &mut [T] に変更するなど、さまざまなコンテナ引数をスライスに変更することを提案します。ここでの主な動機は、スライスによってより柔軟な API が得られることですが、間接参照が少なくなり、コンパイラにとって最適化の機会が増えるため、より高速なコードにつながる可能性もあります。
例。
型の禁止
以降の章では、より高速な代替手段を優先して、特定の標準ライブラリ型を避ける価値がある場合があることを見ていきます。これらの代替手段を使うと決めた場合でも、誤って一部の場所で標準ライブラリ型を使ってしまうことは簡単に起こります。
この問題を避けるために、Clippy の disallowed_types lint を使うことができます。たとえば、標準のハッシュテーブルの使用を禁止するには(理由は Hashing セクションで説明します)、次の行を含む clippy.toml ファイルをコードに追加します。
disallowed-types = ["std::collections::HashMap", "std::collections::HashSet"]