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:

描述Lint
warnings所有设置为发出警告的 lint请参阅 warn-by-default 获取默认警告设置
deprecated-safe用于检测过去被错误标记为安全的函数的 lintdeprecated-safe-2024
future-incompatible用于检测具有未来兼容性问题的代码的 lintabi-unsupported-vector-types, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, deref-into-dyn-supertrait, 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, order-dependent-trait-objects, out-of-scope-macro-calls, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, ptr-cast-add-auto-to-object, 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违反标准命名约定non-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 来查看上表。 这将为您提供已安装的特定编译器的确切值。