Open2

rustc lint

eduidleduidl

rust -W helpで見る.

https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html

  • absolute-paths-not-starting-with-crate
    • 2018だとそもそもコンパイルできないので不要
  • box-pointers

    This lint is mostly historical, and not particularly useful.

    • とあるので不要そう
  • (deprecated-in-future)

    The deprecated_in_future lint is internal to rustc and should not be used by user code.

  • elided-lifetimes-in-paths
    • 匿名ライフタイム使えってやつ
    • rust-2018-idioms経由で指定する
  • explicit-outlives-requirements
    • 不要なライフタイム境界に警告
    • rust-2018-idioms経由で指定する
  • keyword-idents
    • 2018だとそもそもコンパイルできないので不要
  • macro-use-extern-crate
    • #[macro_use]に対する警告.
  • meta-variable-misuse
    • マクロ定義で変数の誤使用に対する警告
    • 不達コードだとコンパイルエラーにならないよう
    • 誤使用というよりdead codeの問題のような……
  • missing-abi
    • 暗黙のextern "C"に対する警告
    • rustfmtのforce_explicit_abiで直してくれるので不要
  • missing-copy-implementations
    • Copyのつけ忘れに警告
  • missing-debug-implementations
    • Debugのつけ忘れに警告
  • missing-docs
    • 公開APIに対するドキュメントの欠如に警告
  • non-ascii-idents
    • 非ascii文字を含んだ識別子への警告
  • noop-method-call
    • T: !Cloneのとき、<&T as Clone>::clone()を呼ぶと何もしないらしい.そういった場合への警告
    • 警告例のコードは、clippy::clone_double_ref (correctness)に指摘された
  • pointer-structural-match
    • ポインタへのパターンマッチはコンパイラ依存らしい
    • future-incompatible経由で指定
  • rust-2021-incompatible-closure-captures
  • rust-2021-incompatible-or-patterns
  • rust-2021-prefixes-incompatible-syntax
  • rust-2021-prelude-collisions
  • semicolon-in-expressions-from-macros
    • macro_rules!のbodyの末尾にセミコロンがある場合に警告
    • future-incompatible経由で指定
  • single-use-lifetimes
    • clippy::needless_lifetimes (complexity) でよさそう
  • trivial-casts
    • &Tas *const Tする等、不要な型変換に警告
  • trivial-numeric-casts
    • 42_i32 as i32のような不要な型変換に警告
    • clippy::unnecessary_cast (complexity) でよさそう
  • unreachable-pub
    • crate rootから到達不能なpubへの警告
  • unsafe-code
    • unsafeの使用に警告
  • unsafe-op-in-unsafe-fn
    • unsafe fnの中でもunsafeブロックの使用を強いる
    • これがallowの状態で、unsafe fnの中でもunsafeブロックを書くと今度はunused-unsafeに引っかかる
    • どこでunsafeを使っているのかが明確になってよい気がする
  • unstable-features

    The unstable_features is deprecated and should no longer be used.

  • unused-crate-dependencies
    • 使われていないcrate依存に警告
  • unused-extern-crates
    • rust-2018-idioms経由で指定
  • unused-import-braces
    • use test::{A};のような波括弧に警告
    • rustfmtで直るので不要
  • unused-lifetimes
    • clippy::extra_unused_lifetimes (complexity) でよさそう
  • unused-qualifications
    • useしていて、もっと短いパスで参照できるときに警告
  • unused-results
    • 返り値を使っていない場合に警告
  • variant-size-differences
    • enum[u8; 1024]みたいなのを入れると、enumのサイズが大きくなるのでヒープに置けって話