rustc 有“lint 分组”的概念,你可以通过一个名称来切换多个警告。
例如,nonstandard-style lint 会同时设置 non-camel-case-types、non-snake-case 和 non-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 的函数的 lint | deprecated-safe-2024 |
| future-incompatible | 检测存在未来兼容性问题的代码的 lint | abi-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 | 检测在后续版本中将成为关键字的标识符的 lint | keyword-idents-2018, keyword-idents-2024 |
| let-underscore | 检测可能是无效的通配符 let 绑定的 lint | let-underscore-drop, let-underscore-lock |
| nonstandard-style | 违反标准命名约定的 lint | non-camel-case-types, non-snake-case, non-upper-case-globals |
| refining-impl-trait | 检测通过 trait 实现细化 impl Trait 返回类型的 lint | refining-impl-trait-internal, refining-impl-trait-reachable |
| rust-2018-compatibility | 用于将代码从 2015 版本迁移到 2018 版本的 lint | absolute-paths-not-starting-with-crate, anonymous-parameters, keyword-idents-2018, tyvar-behind-raw-pointer |
| rust-2018-idioms | 引导您使用 Rust 2018 惯用特性的 lint | bare-trait-objects, elided-lifetimes-in-paths, ellipsis-inclusive-range-patterns, explicit-outlives-requirements, unused-extern-crates |
| rust-2021-compatibility | 用于将代码从 2018 版本迁移到 2021 版本的 lint | array-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 版本的 lint | boxed-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 | 检测已声明但未使用或存在冗余语法的 lint | dead-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 查看上述表格。这将提供你安装的特定编译器版本的确切值。