Lint 分组

rustc 有“lint 分组”的概念,你可以通过一个名称来切换多个警告。

例如,nonstandard-style lint 会同时设置 non-camel-case-typesnon-snake-casenon-upper-case-globals。所以这些是等效的

$ rustc -D nonstandard-style
$ rustc -D non-camel-case-types -D non-snake-case -D non-upper-case-globals

以下是每个 lint 分组及其包含的 lint 列表

分组描述包含的 Lints
warnings所有设置为发出警告的 lint参阅 默认警告 以了解默认的警告列表
deprecated-safe针对过去被错误标记为 safe 的函数的 lintdeprecated-safe-2024
future-incompatible检测存在未来兼容性问题的代码的 lintabi-unsupported-vector-types, ambiguous-associated-items, ambiguous-glob-imports, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, out-of-scope-macro-calls, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, soft-unstable, uncovered-param-in-projection, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-fn-ptr-calling-conventions, wasm-c-abi
keyword-idents检测在后续版本中将成为关键字的标识符的 lintkeyword-idents-2018, keyword-idents-2024
let-underscore检测可能是无效的通配符 let 绑定的 lintlet-underscore-drop, let-underscore-lock
nonstandard-style违反标准命名约定的 lintnon-camel-case-types, non-snake-case, non-upper-case-globals
refining-impl-trait检测通过 trait 实现细化 impl Trait 返回类型的 lintrefining-impl-trait-internal, refining-impl-trait-reachable
rust-2018-compatibility用于将代码从 2015 版本迁移到 2018 版本的 lintabsolute-paths-not-starting-with-crate, anonymous-parameters, keyword-idents-2018, tyvar-behind-raw-pointer
rust-2018-idioms引导您使用 Rust 2018 惯用特性的 lintbare-trait-objects, elided-lifetimes-in-paths, ellipsis-inclusive-range-patterns, explicit-outlives-requirements, unused-extern-crates
rust-2021-compatibility用于将代码从 2018 版本迁移到 2021 版本的 lintarray-into-iter, bare-trait-objects, ellipsis-inclusive-range-patterns, non-fmt-panics, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions
rust-2024-compatibility用于将代码从 2021 版本迁移到 2024 版本的 lintboxed-slice-into-iter, dependency-on-unit-never-type-fallback, deprecated-safe-2024, edition-2024-expr-fragment-specifier, if-let-rescope, impl-trait-overcaptures, keyword-idents-2024, missing-unsafe-on-extern, never-type-fallback-flowing-into-unsafe, rust-2024-guarded-string-incompatible-syntax, rust-2024-incompatible-pat, rust-2024-prelude-collisions, static-mut-refs, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn
unused检测已声明但未使用或存在冗余语法的 lintdead-code, map-unit-fn, path-statements, redundant-semicolons, unreachable-code, unreachable-patterns, unused-allocation, unused-assignments, unused-attributes, unused-braces, unused-doc-comments, unused-extern-crates, unused-features, unused-imports, unused-labels, unused-macro-rules, unused-macros, unused-must-use, unused-mut, unused-parens, unused-unsafe, unused-variables

此外,还有一个 bad-style lint 分组,它是 nonstandard-style 的已弃用别名。

最后,你也可以通过执行 rustc -W help 查看上述表格。这将提供你安装的特定编译器版本的确切值。