lints

`rustc` lints.
git clone https://git.philomathiclife.com/repos/lints
Log | Files | Refs | README

commit 851f38e1ff3b0ac4a96fcb0ea94c79a7071f3777
Author: Zack Newman <zack@philomathiclife.com>
Date:   Mon, 26 Jan 2026 14:37:21 -0700

init

Diffstat:
A.gitignore | 2++
ACargo.toml | 161+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ALICENSE-APACHE | 177+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ALICENSE-MIT | 20++++++++++++++++++++
AREADME.md | 139+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.0.0.txt | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.1.0.txt | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.10.0.txt | 89+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.11.0.txt | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.12.0.txt | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.12.1.txt | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.13.0.txt | 89+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.14.0.txt | 91+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.15.0.txt | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.15.1.txt | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.16.0.txt | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.17.0.txt | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.18.0.txt | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.19.0.txt | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.2.0.txt | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.20.0.txt | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.21.0.txt | 95+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.22.0.txt | 95+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.22.1.txt | 95+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.23.0.txt | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.24.0.txt | 99+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.24.1.txt | 99+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.25.0.txt | 99+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.26.0.txt | 103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.26.1.txt | 103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.26.2.txt | 103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.27.0.txt | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.27.1.txt | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.27.2.txt | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.28.0.txt | 109+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.29.0.txt | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.29.1.txt | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.29.2.txt | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.3.0.txt | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.30.0.txt | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.30.1.txt | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.31.0.txt | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.31.1.txt | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.32.0.txt | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.33.0.txt | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.34.0.txt | 124+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.34.1.txt | 124+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.34.2.txt | 124+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.35.0.txt | 126+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.36.0.txt | 124+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.37.0.txt | 123+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.38.0.txt | 129+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.39.0.txt | 130+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.4.0.txt | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.40.0.txt | 130+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.41.0.txt | 124+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.41.1.txt | 124+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.42.0.txt | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.43.0.txt | 130+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.43.1.txt | 130+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.44.0.txt | 132+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.44.1.txt | 132+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.45.0.txt | 138+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.45.1.txt | 138+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.45.2.txt | 138+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.46.0.txt | 143+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.47.0.txt | 143+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.48.0.txt | 147+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.49.0.txt | 155+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.5.0.txt | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.50.0.txt | 158+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.51.0.txt | 162+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.52.0.txt | 156+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.52.1.txt | 156+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.53.0.txt | 159+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.54.0.txt | 161+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.55.0.txt | 165+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.56.0.txt | 168+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.56.1.txt | 169+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.57.0.txt | 174+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.58.0.txt | 174+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.58.1.txt | 174+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.59.0.txt | 176+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.6.0.txt | 75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.60.0.txt | 177+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.61.0.txt | 180+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.62.0.txt | 182+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.62.1.txt | 182+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.63.0.txt | 182+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.64.0.txt | 186+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.65.0.txt | 191+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.66.0.txt | 192+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.66.1.txt | 192+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.67.0.txt | 194+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.67.1.txt | 194+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.68.0.txt | 194+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.68.1.txt | 194+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.68.2.txt | 194+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.69.0.txt | 196+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.7.0.txt | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.70.0.txt | 197+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.71.0.txt | 205+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.71.1.txt | 205+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.72.0.txt | 216+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.72.1.txt | 216+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.73.0.txt | 221+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.74.0.txt | 223+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.74.1.txt | 223+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.75.0.txt | 223+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.76.0.txt | 225+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.77.0.txt | 226+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.77.1.txt | 226+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.77.2.txt | 226+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.78.0.txt | 224+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.79.0.txt | 231+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.8.0.txt | 80+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.80.0.txt | 235+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.80.1.txt | 235+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.81.0.txt | 241+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.82.0.txt | 245+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.83.0.txt | 249+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.84.0.txt | 249+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.84.1.txt | 249+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.85.0.txt | 251+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.85.1.txt | 251+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.86.0.txt | 254+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.87.0.txt | 253+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.88.0.txt | 254+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.89.0.txt | 254+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.9.0.txt | 86+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.90.0.txt | 257+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.91.0.txt | 260+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.91.1.txt | 260+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.92.0.txt | 259+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aoutputs/1.93.0.txt | 264+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/args.rs | 260+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/cmd.rs | 240+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/main.rs | 187+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/parse.rs | 688+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
139 files changed, 22114 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1,2 @@ +Cargo.lock +target/** diff --git a/Cargo.toml b/Cargo.toml @@ -0,0 +1,161 @@ +[package] +authors = ["Zack Newman <zack@philomathiclife.com>"] +categories = ["command-line-utilities", "development-tools", "rust-patterns"] +description = "Writes [lints.rust] to stdout such that all lints are denied or allowed." +documentation = "https://crates.io/crates/lints/" +edition = "2024" +keywords = ["lints", "rust"] +license = "MIT OR Apache-2.0" +name = "lints" +readme = "README.md" +repository = "https://git.philomathiclife.com/repos/lints/" +rust-version = "1.89.0" +version = "0.1.0" + +[lints.rust] +deprecated-safe = { level = "deny", priority = -1 } +future-incompatible = { level = "deny", priority = -1 } +keyword-idents = { level = "deny", priority = -1 } +let-underscore = { level = "deny", priority = -1 } +nonstandard-style = { level = "deny", priority = -1 } +refining-impl-trait = { level = "deny", priority = -1 } +rust-2018-compatibility = { level = "deny", priority = -1 } +rust-2018-idioms = { level = "deny", priority = -1 } +rust-2021-compatibility = { level = "deny", priority = -1 } +rust-2024-compatibility = { level = "deny", priority = -1 } +unknown-or-malformed-diagnostic-attributes = { level = "deny", priority = -1 } +unused = { level = "deny", priority = -1 } +warnings = { level = "deny", priority = -1 } +ambiguous-negative-literals = { level = "deny", priority = -1 } +closure-returning-async-block = { level = "deny", priority = -1 } +deprecated-in-future = { level = "deny", priority = -1 } +deref-into-dyn-supertrait = { level = "deny", priority = -1 } +ffi-unwind-calls = { level = "deny", priority = -1 } +#fuzzy-provenance-casts = { level = "deny", priority = -1 } +impl-trait-redundant-captures = { level = "deny", priority = -1 } +linker-messages = { level = "deny", priority = -1 } +#lossy-provenance-casts = { level = "deny", priority = -1 } +macro-use-extern-crate = { level = "deny", priority = -1 } +meta-variable-misuse = { level = "deny", priority = -1 } +missing-copy-implementations = { level = "deny", priority = -1 } +missing-debug-implementations = { level = "deny", priority = -1 } +missing-docs = { level = "deny", priority = -1 } +#multiple-supertrait-upcastable = { level = "deny", priority = -1 } +#must-not-suspend = { level = "deny", priority = -1 } +non-ascii-idents = { level = "deny", priority = -1 } +#non-exhaustive-omitted-patterns = { level = "deny", priority = -1 } +redundant-imports = { level = "deny", priority = -1 } +redundant-lifetimes = { level = "deny", priority = -1 } +#resolving-to-items-shadowing-supertrait-items = { level = "deny", priority = -1 } +#shadowing-supertrait-items = { level = "deny", priority = -1 } +single-use-lifetimes = { level = "deny", priority = -1 } +trivial-casts = { level = "deny", priority = -1 } +trivial-numeric-casts = { level = "deny", priority = -1 } +unit-bindings = { level = "deny", priority = -1 } +unnameable-types = { level = "deny", priority = -1 } +#unqualified-local-imports = { level = "deny", priority = -1 } +unreachable-pub = { level = "deny", priority = -1 } +unsafe-code = { level = "deny", priority = -1 } +unstable-features = { level = "deny", priority = -1 } +unused-crate-dependencies = { level = "deny", priority = -1 } +unused-import-braces = { level = "deny", priority = -1 } +unused-lifetimes = { level = "deny", priority = -1 } +unused-qualifications = { level = "deny", priority = -1 } +unused-results = { level = "deny", priority = -1 } +variant-size-differences = { level = "deny", priority = -1 } +# Before publishing to crates.io, comment above and uncomment below. +#warnings = { level = "allow", priority = -1 } +#ambiguous-associated-items = { level = "allow", priority = -1 } +#ambiguous-glob-imports = { level = "allow", priority = -1 } +#arithmetic-overflow = { level = "allow", priority = -1 } +#binary-asm-labels = { level = "allow", priority = -1 } +#bindings-with-variant-name = { level = "allow", priority = -1 } +#conflicting-repr-hints = { level = "allow", priority = -1 } +#dangerous-implicit-autorefs = { level = "allow", priority = -1 } +#default-overrides-default-fields = { level = "allow", priority = -1 } +#dependency-on-unit-never-type-fallback = { level = "allow", priority = -1 } +#deref-nullptr = { level = "allow", priority = -1 } +#elided-lifetimes-in-associated-constant = { level = "allow", priority = -1 } +#enum-intrinsics-non-enums = { level = "allow", priority = -1 } +#explicit-builtin-cfgs-in-flags = { level = "allow", priority = -1 } +#ill-formed-attribute-input = { level = "allow", priority = -1 } +#incomplete-include = { level = "allow", priority = -1 } +#ineffective-unstable-trait-impl = { level = "allow", priority = -1 } +#invalid-atomic-ordering = { level = "allow", priority = -1 } +#invalid-doc-attributes = { level = "allow", priority = -1 } +#invalid-from-utf8-unchecked = { level = "allow", priority = -1 } +#invalid-macro-export-arguments = { level = "allow", priority = -1 } +#invalid-null-arguments = { level = "allow", priority = -1 } +#invalid-reference-casting = { level = "allow", priority = -1 } +#invalid-type-param-default = { level = "allow", priority = -1 } +#legacy-derive-helpers = { level = "allow", priority = -1 } +#let-underscore-lock = { level = "allow", priority = -1 } +#long-running-const-eval = { level = "allow", priority = -1 } +#macro-expanded-macro-exports-accessed-by-absolute-paths = { level = "allow", priority = -1 } +#mutable-transmutes = { level = "allow", priority = -1 } +#named-asm-labels = { level = "allow", priority = -1 } +#never-type-fallback-flowing-into-unsafe = { level = "allow", priority = -1 } +#no-mangle-const-items = { level = "allow", priority = -1 } +#out-of-scope-macro-calls = { level = "allow", priority = -1 } +#overflowing-literals = { level = "allow", priority = -1 } +#patterns-in-fns-without-body = { level = "allow", priority = -1 } +#proc-macro-derive-resolution-fallback = { level = "allow", priority = -1 } +#pub-use-of-private-extern-crate = { level = "allow", priority = -1 } +#repr-transparent-non-zst-fields = { level = "allow", priority = -1 } +#semicolon-in-expressions-from-macros = { level = "allow", priority = -1 } +#soft-unstable = { level = "allow", priority = -1 } +#test-unstable-lint = { level = "allow", priority = -1 } +#text-direction-codepoint-in-comment = { level = "allow", priority = -1 } +#text-direction-codepoint-in-literal = { level = "allow", priority = -1 } +#unconditional-panic = { level = "allow", priority = -1 } +#undropped-manually-drops = { level = "allow", priority = -1 } +#unknown-crate-types = { level = "allow", priority = -1 } +#useless-deprecated = { level = "allow", priority = -1 } + +# Before publishing to crates.io, comment below. +[lints.clippy] +cargo = { level = "deny", priority = -1 } +complexity = { level = "deny", priority = -1 } +correctness = { level = "deny", priority = -1 } +nursery = { level = "deny", priority = -1 } +pedantic = { level = "deny", priority = -1 } +perf = { level = "deny", priority = -1 } +restriction = { level = "deny", priority = -1 } +style = { level = "deny", priority = -1 } +suspicious = { level = "deny", priority = -1 } +# Noisy, opinionated, and likely don't prevent bugs or improve APIs. +arbitrary_source_item_ordering = "allow" +blanket_clippy_restriction_lints = "allow" +implicit_return = "allow" +min_ident_chars = "allow" +missing_trait_methods = "allow" +pub_with_shorthand = "allow" +redundant_pub_crate = "allow" +return_and_then = "allow" +single_call_fn = "allow" +single_char_lifetime_names = "allow" +unseparated_literal_suffix = "allow" + +[package.metadata.docs.rs] +default-target = "x86_64-unknown-linux-gnu" +targets = [ + "aarch64-apple-darwin", + "aarch64-pc-windows-msvc", + "aarch64-unknown-linux-gnu", + "i686-pc-windows-msvc", + "i686-unknown-linux-gnu", + "x86_64-pc-windows-gnu", + "x86_64-pc-windows-msvc", + "x86_64-unknown-freebsd", + "x86_64-unknown-linux-musl", + "x86_64-unknown-netbsd" +] + +[target.'cfg(target_os = "openbsd")'.dependencies] +priv_sep = { version = "3.0.0-alpha.4.0", default-features = false, features = ["std"] } + +[profile.release] +codegen-units = 1 +lto = true +panic = 'abort' +strip = true diff --git a/LICENSE-APACHE b/LICENSE-APACHE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/LICENSE-MIT b/LICENSE-MIT @@ -0,0 +1,20 @@ +Copyright © 2026 Zack Newman + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +“Software”), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md @@ -0,0 +1,139 @@ +CLI app for `rustc` lints +========================= + +[<img alt="git" src="https://git.philomathiclife.com/badges/lints.svg" height="20">](https://git.philomathiclife.com/lints/log.html) +[<img alt="crates.io" src="https://img.shields.io/crates/v/lints.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/lints) + +`lints` is a CLI application that parses the output of [`rustc -Whelp`](https://doc.rust-lang.org/stable/rustc/) +before writing the lints to `stdout` in a format that can be added to a TOML table, `lint.rustc` in `Cargo.toml`. + +## Why is this useful? + +Unlike [Clippy](https://doc.rust-lang.org/stable/clippy/index.html), many `rustc` lints are not members of at +least one lint group which makes it easy for one to not enjoy the benefit of a lint they didn't know about it. +`rustc` lints and lint groups change rather frequently, so it can be "annoying" to maintain a list of up-to-date +lints. + +## Usage + +`lints [COMMAND] [OPTIONS]` + +## Commands + +* `allow`: Allows all lints. +* `deny`: Denies all lints. +* `help`: This message. +* `version`: Prints version info. + +## Options + +* `--all`: Writes all individual lints even if they're already part of a lint group. +* `--allow-undefined-lints`: Lint groups that contain undefined lints are allowed. + +When nothing or `deny` is passed, all lint groups and `allow`-by-default lints that are not part of a group +are set to `deny`. +When `allow` is passed, `"warnings"` and all `deny`-by-default lints are set to `allow`. +`stdout` is written to in the format of the TOML table, `lints.rust`, which can be added to `Cargo.toml`. + +`--allow-undefined-lints` should rarely be necessary since the lints defined in a lint group per `rustc -Whelp` +are almost always one of the lints listed. There have been exceptions though (e.g., `rustc 1.48.0` lists the +lint group `"rustdoc"` containing the lint `"private-intra-doc-links"` despite that lint not being list in +the table of lints). + +## `lints` in action + +```bash +[zack@laptop ~]$ rustc -V +rustc 1.93.0 (254b59607 2026-01-19) +[zack@laptop ~]$ lints version +lints 0.1.0 +[zack@laptop ~]$ lints +deprecated-safe = { level = "deny", priority = -1 } +future-incompatible = { level = "deny", priority = -1 } +keyword-idents = { level = "deny", priority = -1 } +let-underscore = { level = "deny", priority = -1 } +nonstandard-style = { level = "deny", priority = -1 } +refining-impl-trait = { level = "deny", priority = -1 } +rust-2018-compatibility = { level = "deny", priority = -1 } +rust-2018-idioms = { level = "deny", priority = -1 } +rust-2021-compatibility = { level = "deny", priority = -1 } +rust-2024-compatibility = { level = "deny", priority = -1 } +unknown-or-malformed-diagnostic-attributes = { level = "deny", priority = -1 } +unused = { level = "deny", priority = -1 } +warnings = { level = "deny", priority = -1 } +ambiguous-negative-literals = { level = "deny", priority = -1 } +closure-returning-async-block = { level = "deny", priority = -1 } +deprecated-in-future = { level = "deny", priority = -1 } +deref-into-dyn-supertrait = { level = "deny", priority = -1 } +ffi-unwind-calls = { level = "deny", priority = -1 } +fuzzy-provenance-casts = { level = "deny", priority = -1 } +impl-trait-redundant-captures = { level = "deny", priority = -1 } +linker-messages = { level = "deny", priority = -1 } +lossy-provenance-casts = { level = "deny", priority = -1 } +macro-use-extern-crate = { level = "deny", priority = -1 } +meta-variable-misuse = { level = "deny", priority = -1 } +missing-copy-implementations = { level = "deny", priority = -1 } +missing-debug-implementations = { level = "deny", priority = -1 } +missing-docs = { level = "deny", priority = -1 } +multiple-supertrait-upcastable = { level = "deny", priority = -1 } +must-not-suspend = { level = "deny", priority = -1 } +non-ascii-idents = { level = "deny", priority = -1 } +non-exhaustive-omitted-patterns = { level = "deny", priority = -1 } +redundant-imports = { level = "deny", priority = -1 } +redundant-lifetimes = { level = "deny", priority = -1 } +resolving-to-items-shadowing-supertrait-items = { level = "deny", priority = -1 } +shadowing-supertrait-items = { level = "deny", priority = -1 } +single-use-lifetimes = { level = "deny", priority = -1 } +trivial-casts = { level = "deny", priority = -1 } +trivial-numeric-casts = { level = "deny", priority = -1 } +unit-bindings = { level = "deny", priority = -1 } +unnameable-types = { level = "deny", priority = -1 } +unqualified-local-imports = { level = "deny", priority = -1 } +unreachable-pub = { level = "deny", priority = -1 } +unsafe-code = { level = "deny", priority = -1 } +unstable-features = { level = "deny", priority = -1 } +unused-crate-dependencies = { level = "deny", priority = -1 } +unused-import-braces = { level = "deny", priority = -1 } +unused-lifetimes = { level = "deny", priority = -1 } +unused-qualifications = { level = "deny", priority = -1 } +unused-results = { level = "deny", priority = -1 } +variant-size-differences = { level = "deny", priority = -1 } +``` + +## Minimum Supported Rust Version (MSRV) + +This will frequently be updated to be the same as stable. Specifically, any time stable is updated and that +update has "useful" features or compilation no longer succeeds (e.g., due to new compiler lints), then MSRV +will be updated. + +MSRV changes will correspond to a SemVer patch version bump pre-`1.0.0`; otherwise a minor version bump. + +## SemVer Policy + +* All on-by-default features of this library are covered by SemVer +* MSRV is considered exempt from SemVer as noted above + +## License + +Licensed under either of + +* Apache License, Version 2.0 ([LICENSE-APACHE](https://www.apache.org/licenses/LICENSE-2.0)) +* MIT license ([LICENSE-MIT](https://opensource.org/licenses/MIT)) + +at your option. + +## Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, +as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. + +Before any PR is sent, `cargo clippy --all-targets` and `cargo test --all-targets` should be run using the stable +and MSRV toolchains. One easy way to achieve this is by invoking [`ci-cargo`](https://crates.io/crates/ci-cargo) +as `ci-cargo clippy --all-targets test --benches --bins --examples --tests` in the `lints` directory. + +Last, `cargo +nightly doc` should be run to ensure documentation can be built. + +### Status + +The crate is only tested on the `x86_64-unknown-linux-gnu`, `x86_64-unknown-openbsd`, and `aarch64-apple-darwin` +targets; but it should work on most platforms. diff --git a/outputs/1.0.0.txt b/outputs/1.0.0.txt @@ -0,0 +1,73 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of #[deprecated] items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unsigned-negation warn using an unary minus operator on unsigned type + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.1.0.txt b/outputs/1.1.0.txt @@ -0,0 +1,73 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of #[deprecated] items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unsigned-negation warn using an unary minus operator on unsigned type + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.10.0.txt b/outputs/1.10.0.txt @@ -0,0 +1,89 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + hr-lifetime-in-assoc-type warn binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern warn floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern warn constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + improper-ctypes warn proper use of libc types in foreign modules + inaccessible-extern-crate warn use of inaccessible extern crate erroneously allowed + invalid-type-param-default warn type parameter default erroneously allowed in invalid location + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + object-unsafe-fragment warn object-unsafe non-principal fragments in object types were erroneously allowed + overflowing-literals warn literal out of range for its type + overlapping-inherent-impls warn two overlapping inherent impls define an item with the same name were erroneously allowed + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + super-or-self-in-global-path warn detects super or self keywords at the beginning of global path + transmute-from-fn-item-types warn transmute from function item type to pointer-sized type erroneously allowed + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unsized-in-tuple warn unsized types in the interior of a tuple were erroneously allowed + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + match-of-unit-variant-via-paren-dotdot deny unit struct or enum variant erroneously allowed to match via path::ident(..) + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, match-of-unit-variant-via-paren-dotdot, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, unsized-in-tuple, object-unsafe-fragment, hr-lifetime-in-assoc-type + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.11.0.txt b/outputs/1.11.0.txt @@ -0,0 +1,90 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + hr-lifetime-in-assoc-type warn binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern warn floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern warn constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + improper-ctypes warn proper use of libc types in foreign modules + inaccessible-extern-crate warn use of inaccessible extern crate erroneously allowed + invalid-type-param-default warn type parameter default erroneously allowed in invalid location + lifetime-underscore warn lifetimes or labels named `'_` were erroneously allowed + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + object-unsafe-fragment warn object-unsafe non-principal fragments in object types were erroneously allowed + overflowing-literals warn literal out of range for its type + overlapping-inherent-impls warn two overlapping inherent impls define an item with the same name were erroneously allowed + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + super-or-self-in-global-path warn detects super or self keywords at the beginning of global path + transmute-from-fn-item-types warn transmute from function item type to pointer-sized type erroneously allowed + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unsized-in-tuple warn unsized types in the interior of a tuple were erroneously allowed + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + match-of-unit-variant-via-paren-dotdot deny unit struct or enum variant erroneously allowed to match via path::ident(..) + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, match-of-unit-variant-via-paren-dotdot, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, unsized-in-tuple, object-unsafe-fragment, hr-lifetime-in-assoc-type, lifetime-underscore + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.12.0.txt b/outputs/1.12.0.txt @@ -0,0 +1,90 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + hr-lifetime-in-assoc-type warn binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern warn floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern warn constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + improper-ctypes warn proper use of libc types in foreign modules + inaccessible-extern-crate warn use of inaccessible extern crate erroneously allowed + invalid-type-param-default warn type parameter default erroneously allowed in invalid location + lifetime-underscore warn lifetimes or labels named `'_` were erroneously allowed + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + object-unsafe-fragment warn object-unsafe non-principal fragments in object types were erroneously allowed + overflowing-literals warn literal out of range for its type + overlapping-inherent-impls warn two overlapping inherent impls define an item with the same name were erroneously allowed + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + super-or-self-in-global-path warn detects super or self keywords at the beginning of global path + transmute-from-fn-item-types warn transmute from function item type to pointer-sized type erroneously allowed + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unsized-in-tuple warn unsized types in the interior of a tuple were erroneously allowed + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + match-of-unit-variant-via-paren-dotdot deny unit struct or enum variant erroneously allowed to match via path::ident(..) + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, match-of-unit-variant-via-paren-dotdot, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, unsized-in-tuple, object-unsafe-fragment, hr-lifetime-in-assoc-type, lifetime-underscore + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.12.1.txt b/outputs/1.12.1.txt @@ -0,0 +1,90 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + hr-lifetime-in-assoc-type warn binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern warn floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern warn constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + improper-ctypes warn proper use of libc types in foreign modules + inaccessible-extern-crate warn use of inaccessible extern crate erroneously allowed + invalid-type-param-default warn type parameter default erroneously allowed in invalid location + lifetime-underscore warn lifetimes or labels named `'_` were erroneously allowed + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + object-unsafe-fragment warn object-unsafe non-principal fragments in object types were erroneously allowed + overflowing-literals warn literal out of range for its type + overlapping-inherent-impls warn two overlapping inherent impls define an item with the same name were erroneously allowed + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + super-or-self-in-global-path warn detects super or self keywords at the beginning of global path + transmute-from-fn-item-types warn transmute from function item type to pointer-sized type erroneously allowed + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unsized-in-tuple warn unsized types in the interior of a tuple were erroneously allowed + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + match-of-unit-variant-via-paren-dotdot deny unit struct or enum variant erroneously allowed to match via path::ident(..) + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, match-of-unit-variant-via-paren-dotdot, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, unsized-in-tuple, object-unsafe-fragment, hr-lifetime-in-assoc-type, lifetime-underscore + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.13.0.txt b/outputs/1.13.0.txt @@ -0,0 +1,89 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + hr-lifetime-in-assoc-type warn binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern warn floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern warn constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + improper-ctypes warn proper use of libc types in foreign modules + inaccessible-extern-crate warn use of inaccessible extern crate erroneously allowed + invalid-type-param-default warn type parameter default erroneously allowed in invalid location + lifetime-underscore warn lifetimes or labels named `'_` were erroneously allowed + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + overlapping-inherent-impls warn two overlapping inherent impls define an item with the same name were erroneously allowed + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + safe-extern-statics warn safe access to extern statics was erroneously allowed + stable-features warn stable features found in #[feature] directive + super-or-self-in-global-path warn detects super or self keywords at the beginning of global path + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + match-of-unit-variant-via-paren-dotdot deny unit struct or enum variant erroneously allowed to match via path::ident(..) + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + transmute-from-fn-item-types deny transmute from function item type to pointer-sized type erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, match-of-unit-variant-via-paren-dotdot, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, hr-lifetime-in-assoc-type, lifetime-underscore, safe-extern-statics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.14.0.txt b/outputs/1.14.0.txt @@ -0,0 +1,91 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + extra-requirement-in-impl warn detects extra requirements in impls that were erroneously allowed + hr-lifetime-in-assoc-type warn binding for associated type references higher-ranked lifetime that does not appear in the trait input types + improper-ctypes warn proper use of libc types in foreign modules + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + safe-extern-statics warn safe access to extern statics was erroneously allowed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + illegal-floating-point-constant-pattern deny floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern deny constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + inaccessible-extern-crate deny use of inaccessible extern crate erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + lifetime-underscore deny lifetimes or labels named `'_` were erroneously allowed + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + overlapping-inherent-impls deny two overlapping inherent impls define an item with the same name were erroneously allowed + super-or-self-in-global-path deny detects super or self keywords at the beginning of global path + transmute-from-fn-item-types deny transmute from function item type to pointer-sized type erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, hr-lifetime-in-assoc-type, lifetime-underscore, safe-extern-statics, patterns-in-fns-without-body, extra-requirement-in-impl + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.15.0.txt b/outputs/1.15.0.txt @@ -0,0 +1,93 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + extra-requirement-in-impl warn detects extra requirements in impls that were erroneously allowed + improper-ctypes warn proper use of libc types in foreign modules + legacy-directory-ownership warn non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports warn detects names that resolve to ambiguous glob imports with RFC 1560 + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + safe-extern-statics warn safe access to extern statics was erroneously allowed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + hr-lifetime-in-assoc-type deny binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern deny floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern deny constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + inaccessible-extern-crate deny use of inaccessible extern crate erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + lifetime-underscore deny lifetimes or labels named `'_` were erroneously allowed + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + overlapping-inherent-impls deny two overlapping inherent impls define an item with the same name were erroneously allowed + super-or-self-in-global-path deny detects super or self keywords at the beginning of global path + transmute-from-fn-item-types deny transmute from function item type to pointer-sized type erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, hr-lifetime-in-assoc-type, lifetime-underscore, safe-extern-statics, patterns-in-fns-without-body, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.15.1.txt b/outputs/1.15.1.txt @@ -0,0 +1,93 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + extra-requirement-in-impl warn detects extra requirements in impls that were erroneously allowed + improper-ctypes warn proper use of libc types in foreign modules + legacy-directory-ownership warn non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports warn detects names that resolve to ambiguous glob imports with RFC 1560 + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + safe-extern-statics warn safe access to extern statics was erroneously allowed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + hr-lifetime-in-assoc-type deny binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern deny floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern deny constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + inaccessible-extern-crate deny use of inaccessible extern crate erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + lifetime-underscore deny lifetimes or labels named `'_` were erroneously allowed + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + overlapping-inherent-impls deny two overlapping inherent impls define an item with the same name were erroneously allowed + super-or-self-in-global-path deny detects super or self keywords at the beginning of global path + transmute-from-fn-item-types deny transmute from function item type to pointer-sized type erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, hr-lifetime-in-assoc-type, lifetime-underscore, safe-extern-statics, patterns-in-fns-without-body, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.16.0.txt b/outputs/1.16.0.txt @@ -0,0 +1,94 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + improper-ctypes warn proper use of libc types in foreign modules + legacy-directory-ownership warn non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports warn detects names that resolve to ambiguous glob imports with RFC 1560 + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + safe-extern-statics warn safe access to extern statics was erroneously allowed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + extra-requirement-in-impl deny detects extra requirements in impls that were erroneously allowed + hr-lifetime-in-assoc-type deny binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern deny floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern deny constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + inaccessible-extern-crate deny use of inaccessible extern crate erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + lifetime-underscore deny lifetimes or labels named `'_` were erroneously allowed + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + overlapping-inherent-impls deny two overlapping inherent impls define an item with the same name were erroneously allowed + super-or-self-in-global-path deny detects super or self keywords at the beginning of global path + transmute-from-fn-item-types deny transmute from function item type to pointer-sized type erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, hr-lifetime-in-assoc-type, lifetime-underscore, safe-extern-statics, patterns-in-fns-without-body, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.17.0.txt b/outputs/1.17.0.txt @@ -0,0 +1,96 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + improper-ctypes warn proper use of libc types in foreign modules + legacy-directory-ownership warn non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports warn detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier warn detects missing fragment specifiers in unused `macro_rules!` patterns + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + resolve-trait-on-defaulted-unit warn attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics warn safe access to extern statics was erroneously allowed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + extra-requirement-in-impl deny detects extra requirements in impls that were erroneously allowed + hr-lifetime-in-assoc-type deny binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern deny floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern deny constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + inaccessible-extern-crate deny use of inaccessible extern crate erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + lifetime-underscore deny lifetimes or labels named `'_` were erroneously allowed + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + overlapping-inherent-impls deny two overlapping inherent impls define an item with the same name were erroneously allowed + super-or-self-in-global-path deny detects super or self keywords at the beginning of global path + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, hr-lifetime-in-assoc-type, lifetime-underscore, resolve-trait-on-defaulted-unit, safe-extern-statics, patterns-in-fns-without-body, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, missing-fragment-specifier + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.18.0.txt b/outputs/1.18.0.txt @@ -0,0 +1,96 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + improper-ctypes warn proper use of libc types in foreign modules + legacy-directory-ownership warn non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports warn detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier warn detects missing fragment specifiers in unused `macro_rules!` patterns + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + resolve-trait-on-defaulted-unit warn attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics warn safe access to extern statics was erroneously allowed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + extra-requirement-in-impl deny detects extra requirements in impls that were erroneously allowed + hr-lifetime-in-assoc-type deny binding for associated type references higher-ranked lifetime that does not appear in the trait input types + illegal-floating-point-constant-pattern deny floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern deny constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + inaccessible-extern-crate deny use of inaccessible extern crate erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + lifetime-underscore deny lifetimes or labels named `'_` were erroneously allowed + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + overlapping-inherent-impls deny two overlapping inherent impls define an item with the same name were erroneously allowed + super-or-self-in-global-path deny detects super or self keywords at the beginning of global path + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern, hr-lifetime-in-assoc-type, lifetime-underscore, resolve-trait-on-defaulted-unit, safe-extern-statics, patterns-in-fns-without-body, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, missing-fragment-specifier + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.19.0.txt b/outputs/1.19.0.txt @@ -0,0 +1,92 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + legacy-directory-ownership warn non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports warn detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier warn detects missing fragment specifiers in unused `macro_rules!` patterns + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + parenthesized-params-in-types-and-modules warn detects parenthesized generic parameters in type and module names + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + resolve-trait-on-defaulted-unit warn attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics warn safe access to extern statics was erroneously allowed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + extra-requirement-in-impl deny detects extra requirements in impls that were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.2.0.txt b/outputs/1.2.0.txt @@ -0,0 +1,73 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of #[deprecated] items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unsigned-negation warn using an unary minus operator on unsigned type + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.20.0.txt b/outputs/1.20.0.txt @@ -0,0 +1,93 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + extra-requirement-in-impl deny detects extra requirements in impls that were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public reexports of private extern crates + resolve-trait-on-defaulted-unit deny attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.21.0.txt b/outputs/1.21.0.txt @@ -0,0 +1,95 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + extra-requirement-in-impl deny detects extra requirements in impls that were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public reexports of private extern crates + resolve-trait-on-defaulted-unit deny attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.22.0.txt b/outputs/1.22.0.txt @@ -0,0 +1,95 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + extra-requirement-in-impl deny detects extra requirements in impls that were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public reexports of private extern crates + resolve-trait-on-defaulted-unit deny attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.22.1.txt b/outputs/1.22.1.txt @@ -0,0 +1,95 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-attr warn detects use of deprecated attributes + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + extra-requirement-in-impl deny detects extra requirements in impls that were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public reexports of private extern crates + resolve-trait-on-defaulted-unit deny attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, extra-requirement-in-impl, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.23.0.txt b/outputs/1.23.0.txt @@ -0,0 +1,94 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + auto-impl deny The form `impl Foo for .. {}` will be removed, please use `auto trait Foo {}` + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public reexports of private extern crates + resolve-trait-on-defaulted-unit deny attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible auto-impl, private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comment, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.24.0.txt b/outputs/1.24.0.txt @@ -0,0 +1,99 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetime allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + auto-impl deny The form `impl Foo for .. {}` will be removed, please use `auto trait Foo {}` + coerce-never deny detect coercion to ! + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public reexports of private extern crates + resolve-trait-on-defaulted-unit deny attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible auto-impl, private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, coerce-never, tyvar-behind-raw-pointer + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comment, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.24.1.txt b/outputs/1.24.1.txt @@ -0,0 +1,99 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetime allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + auto-impl deny The form `impl Foo for .. {}` will be removed, please use `auto trait Foo {}` + coerce-never deny detect coercion to ! + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public reexports of private extern crates + resolve-trait-on-defaulted-unit deny attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible auto-impl, private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, coerce-never, tyvar-behind-raw-pointer + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comment, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.25.0.txt b/outputs/1.25.0.txt @@ -0,0 +1,99 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + elided-lifetime-in-path allow hidden lifetime parameters are deprecated, try `Foo<'_>` + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetime allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + coerce-never deny detect coercion to ! + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + resolve-trait-on-defaulted-unit deny attempt to resolve a trait on an expression whose type cannot be inferred but which currently defaults to () + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, resolve-trait-on-defaulted-unit, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, coerce-never, tyvar-behind-raw-pointer + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comment, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.26.0.txt b/outputs/1.26.0.txt @@ -0,0 +1,103 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + bare-trait-object allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetime-in-path allow hidden lifetime parameters are deprecated, try `Foo<'_>` + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetime allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collision warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + edition-2018 tyvar-behind-raw-pointer + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collision + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-idioms bare-trait-object, unreachable-pub + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comment, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.26.1.txt b/outputs/1.26.1.txt @@ -0,0 +1,103 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + bare-trait-object allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetime-in-path allow hidden lifetime parameters are deprecated, try `Foo<'_>` + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetime allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collision warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + edition-2018 tyvar-behind-raw-pointer + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collision + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-idioms bare-trait-object, unreachable-pub + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comment, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.26.2.txt b/outputs/1.26.2.txt @@ -0,0 +1,103 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + anonymous-parameters allow detects anonymous parameters + bare-trait-object allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetime-in-path allow hidden lifetime parameters are deprecated, try `Foo<'_>` + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetime allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collision warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comment warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + edition-2018 tyvar-behind-raw-pointer + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collision + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-idioms bare-trait-object, unreachable-pub + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comment, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.27.0.txt b/outputs/1.27.0.txt @@ -0,0 +1,104 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters are deprecated, try `Foo<'_>` + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetimes allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-breakage tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-migration bare-trait-objects, unreachable-pub + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.27.1.txt b/outputs/1.27.1.txt @@ -0,0 +1,104 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters are deprecated, try `Foo<'_>` + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetimes allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-breakage tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-migration bare-trait-objects, unreachable-pub + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.27.2.txt b/outputs/1.27.2.txt @@ -0,0 +1,104 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters are deprecated, try `Foo<'_>` + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetimes allow detects single use lifetimes + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incoherent-fundamental-impls warn potentially-conflicting impls were erroneously allowed + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + legacy-imports deny detects names that resolve to ambiguous glob imports with RFC 1560 + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-imports, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-breakage tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-migration bare-trait-objects, unreachable-pub + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.28.0.txt b/outputs/1.28.0.txt @@ -0,0 +1,109 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters are deprecated, try `Foo<'_>` + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + duplicate-associated-type-bindings warn warns about duplicate associated type bindings in generics + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, duplicate-associated-type-bindings + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unreachable-pub, unused-extern-crates + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.29.0.txt b/outputs/1.29.0.txt @@ -0,0 +1,117 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + async-idents allow detects `async` being used as an identifier + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + duplicate-associated-type-bindings warn warns about duplicate associated type bindings in generics + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-functions warn detects an function that cannot be named being marked as #[test] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + irrefutable-let-patterns deny detects irrefutable patterns in if-let and while-let statements + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, async-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, duplicate-associated-type-bindings, proc-macro-derive-resolution-fallback, question-mark-macro-sep + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, async-idents, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unreachable-pub, unused-extern-crates, macro-use-extern-crate, elided-lifetimes-in-paths, ellipsis-inclusive-range-patterns + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.29.1.txt b/outputs/1.29.1.txt @@ -0,0 +1,117 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + async-idents allow detects `async` being used as an identifier + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + duplicate-associated-type-bindings warn warns about duplicate associated type bindings in generics + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-functions warn detects an function that cannot be named being marked as #[test] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + irrefutable-let-patterns deny detects irrefutable patterns in if-let and while-let statements + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, async-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, duplicate-associated-type-bindings, proc-macro-derive-resolution-fallback, question-mark-macro-sep + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, async-idents, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unreachable-pub, unused-extern-crates, macro-use-extern-crate, elided-lifetimes-in-paths, ellipsis-inclusive-range-patterns + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.29.2.txt b/outputs/1.29.2.txt @@ -0,0 +1,117 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + async-idents allow detects `async` being used as an identifier + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + duplicate-associated-type-bindings warn warns about duplicate associated type bindings in generics + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-functions warn detects an function that cannot be named being marked as #[test] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + irrefutable-let-patterns deny detects irrefutable patterns in if-let and while-let statements + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, async-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, duplicate-associated-type-bindings, proc-macro-derive-resolution-fallback, question-mark-macro-sep + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, async-idents, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unreachable-pub, unused-extern-crates, macro-use-extern-crate, elided-lifetimes-in-paths, ellipsis-inclusive-range-patterns + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.3.0.txt b/outputs/1.3.0.txt @@ -0,0 +1,72 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of #[deprecated] items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.30.0.txt b/outputs/1.30.0.txt @@ -0,0 +1,118 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + duplicate-associated-type-bindings warn warns about duplicate associated type bindings in generics + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + irrefutable-let-patterns deny detects irrefutable patterns in if-let and while-let statements + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, duplicate-associated-type-bindings, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.30.1.txt b/outputs/1.30.1.txt @@ -0,0 +1,118 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + duplicate-associated-type-bindings warn warns about duplicate associated type bindings in generics + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + irrefutable-let-patterns deny detects irrefutable patterns in if-let and while-let statements + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, duplicate-associated-type-bindings, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.31.0.txt b/outputs/1.31.0.txt @@ -0,0 +1,117 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow warn about missing code example in an item's documentation + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + duplicate-associated-type-bindings warn warns about duplicate associated type bindings in generics + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + irrefutable-let-patterns deny detects irrefutable patterns in if-let and while-let statements + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, duplicate-associated-type-bindings, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.31.1.txt b/outputs/1.31.1.txt @@ -0,0 +1,117 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow warn about missing code example in an item's documentation + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + duplicate-associated-type-bindings warn warns about duplicate associated type bindings in generics + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + irrefutable-let-patterns deny detects irrefutable patterns in if-let and while-let statements + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, duplicate-associated-type-bindings, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.32.0.txt b/outputs/1.32.0.txt @@ -0,0 +1,117 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow warn about missing code example in an item's documentation + private-doc-tests allow warn about doc test in private item + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn warn about documentation intra links resolution failure + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + irrefutable-let-patterns deny detects irrefutable patterns in if-let and while-let statements + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.33.0.txt b/outputs/1.33.0.txt @@ -0,0 +1,120 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.34.0.txt b/outputs/1.34.0.txt @@ -0,0 +1,124 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-associated-items warn ambiguous associated items + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, duplicate-matcher-binding-name, nested-impl-trait + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.34.1.txt b/outputs/1.34.1.txt @@ -0,0 +1,124 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-associated-items warn ambiguous associated items + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, duplicate-matcher-binding-name, nested-impl-trait + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.34.2.txt b/outputs/1.34.2.txt @@ -0,0 +1,124 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-associated-items warn ambiguous associated items + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, duplicate-matcher-binding-name, nested-impl-trait + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.35.0.txt b/outputs/1.35.0.txt @@ -0,0 +1,126 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-associated-items warn ambiguous associated items + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + duplicate-matcher-binding-name deny duplicate macro matcher binding name + exceeding-bitshifts deny shift exceeds the type's number of bits + incoherent-fundamental-impls deny potentially-conflicting impls were erroneously allowed + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, incoherent-fundamental-impls, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, duplicate-matcher-binding-name, nested-impl-trait, mutable-borrow-reservation-conflict + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.36.0.txt b/outputs/1.36.0.txt @@ -0,0 +1,124 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + bare-trait-objects allow suggest using `dyn Trait` for trait objects + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + ellipsis-inclusive-range-patterns allow `...` range patterns are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + question-mark-macro-sep allow detects the use of `?` as a macro separator + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, question-mark-macro-sep, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, nested-impl-trait, mutable-borrow-reservation-conflict + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, question-mark-macro-sep + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.37.0.txt b/outputs/1.37.0.txt @@ -0,0 +1,123 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + bare-trait-objects warn suggest using `dyn Trait` for trait objects + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in #[feature] directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as #[test_case] + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, nested-impl-trait, mutable-borrow-reservation-conflict + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.38.0.txt b/outputs/1.38.0.txt @@ -0,0 +1,129 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-`#[structural_match]` type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + bare-trait-objects warn suggest using `dyn Trait` for trait objects + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + soft-unstable deny a feature gate that doesn't break dependent crates + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, nested-impl-trait, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.39.0.txt b/outputs/1.39.0.txt @@ -0,0 +1,130 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-`#[structural_match]` type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + bare-trait-objects warn suggest using `dyn Trait` for trait objects + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolon warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unions-with-drop-fields warn use of unions that contain fields with possibly non-trivial drop code + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + soft-unstable deny a feature gate that doesn't break dependent crates + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible private-in-public, pub-use-of-private-extern-crate, patterns-in-fns-without-body, duplicate-macro-exports, keyword-idents, safe-extern-statics, invalid-type-param-default, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, illegal-floating-point-literal-pattern, anonymous-parameters, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, safe-packed-borrows, order-dependent-trait-objects, tyvar-behind-raw-pointer, unstable-name-collisions, absolute-paths-not-starting-with-crate, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, nested-impl-trait, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility duplicate-macro-exports, keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.4.0.txt b/outputs/1.4.0.txt @@ -0,0 +1,72 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + dead-code warn detect unused, unexported items + deprecated warn detects use of #[deprecated] items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.40.0.txt b/outputs/1.40.0.txt @@ -0,0 +1,130 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-`#[structural_match]` type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-labels allow detects labels that are never used + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + bare-trait-objects warn suggest using `dyn Trait` for trait objects + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + ill-formed-attribute-input warn ill-formed attribute inputs that were previously accepted and used in practice + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nested-impl-trait warn nested occurrence of `impl Trait` type + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + patterns-in-fns-without-body warn patterns in functions without body were erroneously allowed + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolon warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + const-err deny constant evaluation detected erroneous expression + duplicate-macro-exports deny detects duplicate macro exports + exceeding-bitshifts deny shift exceeds the type's number of bits + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-constructor-visibility deny detects use of struct constructors that would be invisible with new visibility rules + legacy-directory-ownership deny non-inline, non-`#[path]` modules (e.g., `mod foo;`) were erroneously allowed in some files not named `mod.rs` + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + parenthesized-params-in-types-and-modules deny detects parenthesized generic parameters in type and module names + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + safe-extern-statics deny safe access to extern statics was erroneously allowed + soft-unstable deny a feature gate that doesn't break dependent crates + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-extern-statics, safe-packed-borrows, patterns-in-fns-without-body, legacy-directory-ownership, legacy-constructor-visibility, missing-fragment-specifier, parenthesized-params-in-types-and-modules, late-bound-lifetime-arguments, order-dependent-trait-objects, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, duplicate-macro-exports, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, nested-impl-trait, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, duplicate-macro-exports + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.41.0.txt b/outputs/1.41.0.txt @@ -0,0 +1,124 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-`#[structural_match]` type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + bare-trait-objects warn suggest using `dyn Trait` for trait objects + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolon warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + const-err deny constant evaluation detected erroneous expression + exceeding-bitshifts deny shift exceeds the type's number of bits + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.41.1.txt b/outputs/1.41.1.txt @@ -0,0 +1,124 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-`#[structural_match]` type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + bare-trait-objects warn suggest using `dyn Trait` for trait objects + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolon warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + const-err deny constant evaluation detected erroneous expression + exceeding-bitshifts deny shift exceeds the type's number of bits + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.42.0.txt b/outputs/1.42.0.txt @@ -0,0 +1,127 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-`#[structural_match]` type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolon warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + exceeding-bitshifts deny shift exceeds the type's number of bits + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.43.0.txt b/outputs/1.43.0.txt @@ -0,0 +1,130 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-`#[structural_match]` type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + coherence-leak-check warn distinct impls distinguished only by the leak-check code + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.43.1.txt b/outputs/1.43.1.txt @@ -0,0 +1,130 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-`#[structural_match]` type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + coherence-leak-check warn distinct impls distinguished only by the leak-check code + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.44.0.txt b/outputs/1.44.0.txt @@ -0,0 +1,132 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-structural-match type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + coherence-leak-check warn distinct impls distinguished only by the leak-check code + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.44.1.txt b/outputs/1.44.1.txt @@ -0,0 +1,132 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-structural-match type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + coherence-leak-check warn distinct impls distinguished only by the leak-check code + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were was erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.45.0.txt b/outputs/1.45.0.txt @@ -0,0 +1,138 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + confusable-idents allow detects visually confusable pairs between identifiers + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-structural-match type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + coherence-leak-check warn distinct impls distinguished only by the leak-check code + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.45.1.txt b/outputs/1.45.1.txt @@ -0,0 +1,138 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + confusable-idents allow detects visually confusable pairs between identifiers + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-structural-match type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + coherence-leak-check warn distinct impls distinguished only by the leak-check code + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.45.2.txt b/outputs/1.45.2.txt @@ -0,0 +1,138 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + confusable-idents allow detects visually confusable pairs between identifiers + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-structural-match type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + coherence-leak-check warn distinct impls distinguished only by the leak-check code + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.46.0.txt b/outputs/1.46.0.txt @@ -0,0 +1,143 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + clashing-extern-declarations allow detects when an extern fn has been declared with the same name but different types + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-structural-match type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + intra-doc-link-resolution-failure warn failures in resolving intra-doc link targets + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, cenum-impl-drop-cast, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc intra-doc-link-resolution-failure, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.47.0.txt b/outputs/1.47.0.txt @@ -0,0 +1,143 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + indirect-structural-match allow pattern with const indirectly referencing non-structural-match type + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + broken-intra-doc-links warn failures in resolving intra-doc link targets + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, soft-unstable, cenum-impl-drop-cast, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc broken-intra-doc-links, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.48.0.txt b/outputs/1.48.0.txt @@ -0,0 +1,147 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + pointer-structural-match allow pointers are not structural-match + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + broken-intra-doc-links warn failures in resolving intra-doc link targets + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, missing-fragment-specifier, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc broken-intra-doc-links, private-intra-doc-links, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.49.0.txt b/outputs/1.49.0.txt @@ -0,0 +1,155 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + invalid-html-tags allow detects invalid HTML tags in doc comments + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + pointer-structural-match allow pointers are not structural-match + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + broken-intra-doc-links warn failures in resolving intra-doc link targets + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-bounds warn bounds of the form `T: Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-autolinks warn detects URLs that could be written using only angle brackets + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-patterns warn detects overlapping patterns + path-statements warn path statements with no effect + private-intra-doc-links warn linking from a public item to a private one + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc non-autolinks, broken-intra-doc-links, private-intra-doc-links, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests, invalid-html-tags + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, overlapping-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.5.0.txt b/outputs/1.5.0.txt @@ -0,0 +1,73 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of #[deprecated] items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.50.0.txt b/outputs/1.50.0.txt @@ -0,0 +1,158 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + invalid-html-tags allow detects invalid HTML tags in doc comments + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + pointer-structural-match allow pointers are not structural-match + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + broken-intra-doc-links warn failures in resolving intra-doc link targets + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-bounds warn bounds of the form `T: Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-autolinks warn detects URLs that could be written using only angle brackets + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panic warn detect braces in single-argument panic!() invocations + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-intra-doc-links warn linking from a public item to a private one + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation detected erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc non-autolinks, broken-intra-doc-links, private-intra-doc-links, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests, invalid-html-tags + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.51.0.txt b/outputs/1.51.0.txt @@ -0,0 +1,162 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + disjoint-capture-drop-reorder allow Drop reorder because of `capture_disjoint_fields` + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + invalid-html-tags allow detects invalid HTML tags in doc comments + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-crate-level-docs allow detects crates with no crate-level documentation + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-doc-code-examples allow detects publicly-exported items without code samples in their documentation + non-ascii-idents allow detects non-ASCII identifiers + pointer-structural-match allow pointers are not structural-match + private-doc-tests allow detects code samples in docs of private items not documented by rustdoc + semicolon-in-expressions-from-macros allow trailing semicolon in macro body used as expression + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + broken-intra-doc-links warn failures in resolving intra-doc link targets + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-bounds warn bounds of the form `T: Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-codeblock-attributes warn codeblock attribute looks a lot like a known one + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in if-let and while-let statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-autolinks warn detects URLs that could be written using only angle brackets + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panic warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-intra-doc-links warn linking from a public item to a private one + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, semicolon-in-expressions-from-macros, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rustdoc non-autolinks, broken-intra-doc-links, private-intra-doc-links, invalid-codeblock-attributes, missing-doc-code-examples, private-doc-tests, invalid-html-tags + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.52.0.txt b/outputs/1.52.0.txt @@ -0,0 +1,156 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + disjoint-capture-drop-reorder allow Drop reorder because of `capture_disjoint_fields` + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + non-ascii-idents allow detects non-ASCII identifiers + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + semicolon-in-expressions-from-macros allow trailing semicolon in macro body used as expression + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-bounds warn bounds of the form `T: Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panic warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-back-compat warn detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.52.1.txt b/outputs/1.52.1.txt @@ -0,0 +1,156 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + anonymous-parameters allow detects anonymous parameters + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + disjoint-capture-drop-reorder allow Drop reorder because of `capture_disjoint_fields` + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + non-ascii-idents allow detects non-ASCII identifiers + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + semicolon-in-expressions-from-macros allow trailing semicolon in macro body used as expression + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unaligned-references allow detects unaligned references to fields of packed structs + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-bounds warn bounds of the form `T: Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panic warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-back-compat warn detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + safe-packed-borrows warn safe borrows of fields of packed structs were erroneously allowed + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, safe-packed-borrows, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.53.0.txt b/outputs/1.53.0.txt @@ -0,0 +1,159 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + disjoint-capture-drop-reorder allow Drop reorder because of `capture_disjoint_fields` + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + non-ascii-idents allow detects non-ASCII identifiers + noop-method-call allow detects the use of well-known noop methods + or-patterns-back-compat allow detects usage of old versions of or-patterns + pointer-structural-match allow pointers are not structural-match + semicolon-in-expressions-from-macros allow trailing semicolon in macro body used as expression + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-value warn an invalid value is being created (such as a NULL reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panic warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-back-compat warn detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.54.0.txt b/outputs/1.54.0.txt @@ -0,0 +1,161 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + disjoint-capture-migration allow Drop reorder and auto traits error because of `capture_disjoint_fields` + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + non-ascii-idents allow detects non-ASCII identifiers + noop-method-call allow detects the use of well-known noop methods + or-patterns-back-compat allow detects usage of old versions of or-patterns + pointer-structural-match allow pointers are not structural-match + semicolon-in-expressions-from-macros allow trailing semicolon in macro body used as expression + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panic warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-back-compat warn detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible keyword-idents, anonymous-parameters, ellipsis-inclusive-range-patterns, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, tyvar-behind-raw-pointer, bare-trait-objects, absolute-paths-not-starting-with-crate, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, array-into-iter + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.55.0.txt b/outputs/1.55.0.txt @@ -0,0 +1,165 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + non-ascii-idents allow detects non-ASCII identifiers + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + semicolon-in-expressions-from-macros allow trailing semicolon in macro body used as expression + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are useless + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-back-compat warn detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.56.0.txt b/outputs/1.56.0.txt @@ -0,0 +1,168 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + non-ascii-idents allow detects non-ASCII identifiers + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-back-compat warn detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.56.1.txt b/outputs/1.56.1.txt @@ -0,0 +1,169 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + non-ascii-idents allow detects non-ASCII identifiers + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-back-compat warn detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.57.0.txt b/outputs/1.57.0.txt @@ -0,0 +1,174 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + proc-macro-back-compat warn detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback warn detects proc macro derives using inaccessible names from parent modules + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.58.0.txt b/outputs/1.58.0.txt @@ -0,0 +1,174 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.58.1.txt b/outputs/1.58.1.txt @@ -0,0 +1,174 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.59.0.txt b/outputs/1.59.0.txt @@ -0,0 +1,176 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-cfg-attr-crate-type-name warn detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-naked-functions warn unsupported naked function definitions + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, unsupported-naked-functions, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.6.0.txt b/outputs/1.6.0.txt @@ -0,0 +1,75 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of #[rustc_deprecated] items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + match-of-unit-variant-via-paren-dotdot warn unit struct or enum variant erroneously allowed to match via path::ident(..) + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible match-of-unit-variant-via-paren-dotdot + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.60.0.txt b/outputs/1.60.0.txt @@ -0,0 +1,177 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-cfg-attr-crate-type-name warn detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.61.0.txt b/outputs/1.61.0.txt @@ -0,0 +1,180 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + keyword-idents allow detects edition keywords being used as an identifier + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-cfg-attr-crate-type-name warn detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + mutable-borrow-reservation-conflict warn reservation of a two-phased borrow conflicts with other shared borrows + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + unaligned-references warn detects unaligned references to fields of packed structs + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, mutable-borrow-reservation-conflict, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.62.0.txt b/outputs/1.62.0.txt @@ -0,0 +1,182 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-cfg-attr-crate-type-name warn detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.62.1.txt b/outputs/1.62.1.txt @@ -0,0 +1,182 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + cenum-impl-drop-cast warn a C-like enum implementing Drop is cast + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-cfg-attr-crate-type-name warn detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.63.0.txt b/outputs/1.63.0.txt @@ -0,0 +1,182 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-cfg-attr-crate-type-name warn detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.64.0.txt b/outputs/1.64.0.txt @@ -0,0 +1,186 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-cfg-attr-crate-type-name warn detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn tranparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.65.0.txt b/outputs/1.65.0.txt @@ -0,0 +1,191 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + const-err deny constant evaluation encountered erroneous expression + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, const-err, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.66.0.txt b/outputs/1.66.0.txt @@ -0,0 +1,192 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.66.1.txt b/outputs/1.66.1.txt @@ -0,0 +1,192 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deref-into-dyn-supertrait, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.67.0.txt b/outputs/1.67.0.txt @@ -0,0 +1,194 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + implied-bounds-entailment warn impl method assumes more implied bounds than its corresponding trait method + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields, implied-bounds-entailment + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.67.1.txt b/outputs/1.67.1.txt @@ -0,0 +1,194 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + bindings-with-variant-name warn detects pattern bindings with the same name as one of the matched variants + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + implied-bounds-entailment warn impl method assumes more implied bounds than its corresponding trait method + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields, implied-bounds-entailment + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.68.0.txt b/outputs/1.68.0.txt @@ -0,0 +1,194 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields, implied-bounds-entailment + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.68.1.txt b/outputs/1.68.1.txt @@ -0,0 +1,194 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields, implied-bounds-entailment + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.68.2.txt b/outputs/1.68.2.txt @@ -0,0 +1,194 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unaligned-references deny detects unaligned references to fields of packed structs + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, unaligned-references, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields, implied-bounds-entailment + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.69.0.txt b/outputs/1.69.0.txt @@ -0,0 +1,196 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields, implied-bounds-entailment, byte-slice-in-packed-struct-with-derive + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.7.0.txt b/outputs/1.7.0.txt @@ -0,0 +1,79 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + invalid-type-param-default warn type parameter default erroneously allowed in invalid location + match-of-unit-variant-via-paren-dotdot warn unit struct or enum variant erroneously allowed to match via path::ident(..) + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, invalid-type-param-default, match-of-unit-variant-via-paren-dotdot + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.70.0.txt b/outputs/1.70.0.txt @@ -0,0 +1,197 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, forbidden-lint-groups, illegal-floating-point-literal-pattern, private-in-public, pub-use-of-private-extern-crate, invalid-type-param-default, patterns-in-fns-without-body, missing-fragment-specifier, late-bound-lifetime-arguments, order-dependent-trait-objects, coherence-leak-check, unstable-name-collisions, where-clauses-object-safety, proc-macro-derive-resolution-fallback, macro-expanded-macro-exports-accessed-by-absolute-paths, ill-formed-attribute-input, conflicting-repr-hints, ambiguous-associated-items, indirect-structural-match, pointer-structural-match, nontrivial-structural-match, soft-unstable, unstable-syntax-pre-expansion, cenum-impl-drop-cast, const-evaluatable-unchecked, uninhabited-static, invalid-doc-attributes, semicolon-in-expressions-from-macros, legacy-derive-helpers, proc-macro-back-compat, unsupported-calling-conventions, deprecated-cfg-attr-crate-type-name, suspicious-auto-trait-impls, repr-transparent-external-private-fields, implied-bounds-entailment, byte-slice-in-packed-struct-with-derive + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, tyvar-behind-raw-pointer, absolute-paths-not-starting-with-crate + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prelude-collisions, rust-2021-prefixes-incompatible-syntax, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.71.0.txt b/outputs/1.71.0.txt @@ -0,0 +1,205 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-alignment deny raw pointers must be aligned before dereferencing + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-alignment, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, private-in-public, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.71.1.txt b/outputs/1.71.1.txt @@ -0,0 +1,205 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-alignment deny raw pointers must be aligned before dereferencing + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-alignment, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, private-in-public, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.72.0.txt b/outputs/1.72.0.txt @@ -0,0 +1,216 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + invalid-reference-casting allow casts of `&T` to `&mut T` without interior mutability + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + private-bounds allow private type in secondary interface of an item + private-interfaces allow private type in primary interface of an item + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-alignment deny raw pointers must be aligned before dereferencing + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-alignment, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, private-in-public, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.72.1.txt b/outputs/1.72.1.txt @@ -0,0 +1,216 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + invalid-reference-casting allow casts of `&T` to `&mut T` without interior mutability + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + noop-method-call allow detects the use of well-known noop methods + pointer-structural-match allow pointers are not structural-match + private-bounds allow private type in secondary interface of an item + private-interfaces allow private type in primary interface of an item + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits will change in the future + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the closure_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-alignment deny raw pointers must be aligned before dereferencing + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-alignment, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, private-in-public, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.73.0.txt b/outputs/1.73.0.txt @@ -0,0 +1,221 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + pointer-structural-match allow pointers are not structural-match + private-bounds allow private type in secondary interface of an item + private-interfaces allow private type in primary interface of an item + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + coinductive-overlap-in-coherence warn impls that are not considered to overlap may be considered to overlap in the future + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-in-public warn detect private items in public interfaces not caught by the old implementation + redundant-semicolons warn detects unnecessary trailing semicolons + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits have recently changed resulting in potential breakage + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-diagnostic-attributes warn unrecognized diagnostic attribute + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-alignment deny raw pointers must be aligned before dereferencing + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-alignment, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, private-in-public, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.74.0.txt b/outputs/1.74.0.txt @@ -0,0 +1,223 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + coinductive-overlap-in-coherence warn impls that are not considered to overlap may be considered to overlap in the future + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + const-patterns-without-partial-eq warn constant in pattern does not implement `PartialEq` + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits have recently changed resulting in potential breakage + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-alignment deny raw pointers must be aligned before dereferencing + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-alignment, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.74.1.txt b/outputs/1.74.1.txt @@ -0,0 +1,223 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + pointer-structural-match allow pointers are not structural-match + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + coinductive-overlap-in-coherence warn impls that are not considered to overlap may be considered to overlap in the future + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + const-patterns-without-partial-eq warn constant in pattern does not implement `PartialEq` + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits have recently changed resulting in potential breakage + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-alignment deny raw pointers must be aligned before dereferencing + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-alignment, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can provide additional lints and lint groups. diff --git a/outputs/1.75.0.txt b/outputs/1.75.0.txt @@ -0,0 +1,223 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + const-patterns-without-partial-eq warn constant in pattern does not implement `PartialEq` + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + pointer-structural-match warn pointers are not structural-match + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits have recently changed resulting in potential breakage + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + coinductive-overlap-in-coherence deny impls that are not considered to overlap may be considered to overlap in the future + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + implied-bounds-entailment deny impl method assumes more implied bounds than its corresponding trait method + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.76.0.txt b/outputs/1.76.0.txt @@ -0,0 +1,225 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features (deprecated. do not use) + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + unused-tuple-struct-fields allow detects tuple struct fields that are never read + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + const-patterns-without-partial-eq warn constant in pattern does not implement `PartialEq` + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + pointer-structural-match warn pointers are not structural-match + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + suspicious-auto-trait-impls warn the rules governing auto traits have recently changed resulting in potential breakage + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + coinductive-overlap-in-coherence deny impls that are not considered to overlap may be considered to overlap in the future + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.77.0.txt b/outputs/1.77.0.txt @@ -0,0 +1,226 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + const-patterns-without-partial-eq warn constant in pattern does not implement `PartialEq` + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + pointer-structural-match warn pointers are not structural-match + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-auto-trait-impls warn the rules governing auto traits have recently changed resulting in potential breakage + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility static-mut-refs, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.77.1.txt b/outputs/1.77.1.txt @@ -0,0 +1,226 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + const-patterns-without-partial-eq warn constant in pattern does not implement `PartialEq` + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + pointer-structural-match warn pointers are not structural-match + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-auto-trait-impls warn the rules governing auto traits have recently changed resulting in potential breakage + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility static-mut-refs, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.77.2.txt b/outputs/1.77.2.txt @@ -0,0 +1,226 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + const-patterns-without-partial-eq warn constant in pattern does not implement `PartialEq` + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + illegal-floating-point-literal-pattern warn floating-point literals cannot be used in patterns + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-doc-attributes warn detects invalid `#[doc(...)]` attributes + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + nontrivial-structural-match warn constant used in pattern of non-structural-match type and the constant's initializer expression contains values of non-structural-match types + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + pointer-structural-match warn pointers are not structural-match + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-auto-trait-impls warn the rules governing auto traits have recently changed resulting in potential breakage + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility static-mut-refs, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.78.0.txt b/outputs/1.78.0.txt @@ -0,0 +1,224 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + non-local-definitions allow checks for non-local definitions + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + pointer-structural-match warn pointers are not structural-match + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, indirect-structural-match, 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, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + rust-2018-compatibility keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility static-mut-refs, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.79.0.txt b/outputs/1.79.0.txt @@ -0,0 +1,231 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + dereferencing-mut-binding allow detects `mut x` bindings that change the type of `x` + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + non-local-definitions allow checks for non-local definitions + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + indirect-structural-match warn constant used in pattern contains value of non-structural-match type in a field or a variant + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + pointer-structural-match warn pointers are not structural-match + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + wasm-c-abi warn detects dependencies that are incompatible with the Wasm C ABI + where-clauses-object-safety warn checks the object safety of where clauses + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-back-compat deny detects usage of old versions of certain proc-macro crates + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, indirect-structural-match, 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, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, wasm-c-abi, where-clauses-object-safety, writes-through-immutable-pointer + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility keyword-idents-2024, static-mut-refs, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.8.0.txt b/outputs/1.8.0.txt @@ -0,0 +1,80 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + improper-ctypes warn proper use of libc types in foreign modules + inaccessible-extern-crate warn use of inaccessible extern crate erroneously allowed + invalid-type-param-default warn type parameter default erroneously allowed in invalid location + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + stable-features warn stable features found in #[feature] directive + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + match-of-unit-variant-via-paren-dotdot deny unit struct or enum variant erroneously allowed to match via path::ident(..) + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, match-of-unit-variant-via-paren-dotdot + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.80.0.txt b/outputs/1.80.0.txt @@ -0,0 +1,235 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe allow detects unsafe functions being used as safe functions + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + non-local-definitions allow checks for non-local definitions + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + impl-trait-redundant-captures warn redundant precise-capturing `use<...>` syntax on an `impl Trait` + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + wasm-c-abi warn detects dependencies that are incompatible with the Wasm C ABI + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, 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, never-type-fallback-flowing-into-unsafe, order-dependent-trait-objects, 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-calling-conventions, wasm-c-abi, writes-through-immutable-pointer + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility keyword-idents-2024, deprecated-safe, missing-unsafe-on-extern, static-mut-refs, unsafe-op-in-unsafe-fn, boxed-slice-into-iter + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.80.1.txt b/outputs/1.80.1.txt @@ -0,0 +1,235 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + box-pointers allow use of owned (Box type) heap memory + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe allow detects unsafe functions being used as safe functions + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + non-local-definitions allow checks for non-local definitions + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-lifetimes-in-associated-constant warn elided lifetimes cannot be used in associated constants in impls + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + impl-trait-redundant-captures warn redundant precise-capturing `use<...>` syntax on an `impl Trait` + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + wasm-c-abi warn detects dependencies that are incompatible with the Wasm C ABI + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, 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, never-type-fallback-flowing-into-unsafe, order-dependent-trait-objects, 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-calling-conventions, wasm-c-abi, writes-through-immutable-pointer + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility keyword-idents-2024, deprecated-safe, missing-unsafe-on-extern, static-mut-refs, unsafe-op-in-unsafe-fn, boxed-slice-into-iter + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.81.0.txt b/outputs/1.81.0.txt @@ -0,0 +1,241 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe allow detects unsafe functions being used as safe functions + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + non-local-definitions allow checks for non-local definitions + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + single-use-lifetimes allow detects lifetime parameters that are only used once + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + byte-slice-in-packed-struct-with-derive warn `[u8]` or `str` used in a packed struct with `derive` + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + impl-trait-redundant-captures warn redundant precise-capturing `use<...>` syntax on an `impl Trait` + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-cast-add-auto-to-object warn detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto` + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + wasm-c-abi warn detects dependencies that are incompatible with the Wasm C ABI + while-true warn suggest using `loop { }` instead of `while true { }` + writes-through-immutable-pointer warn shared references are immutable, and pointers derived from them must not be written to + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, dependency-on-unit-never-type-fallback, deprecated-cfg-attr-crate-type-name, 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, never-type-fallback-flowing-into-unsafe, 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-calling-conventions, wasm-c-abi, writes-through-immutable-pointer + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, deprecated-safe, missing-unsafe-on-extern, static-mut-refs, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn, boxed-slice-into-iter + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.82.0.txt b/outputs/1.82.0.txt @@ -0,0 +1,245 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that implements `Drop` + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when an object-safe trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + non-local-definitions allow checks for non-local definitions + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-eval-mutable-ptr-in-final-value warn detects a mutable pointer that has leaked into final value of a const expression + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + impl-trait-redundant-captures warn redundant precise-capturing `use<...>` syntax on an `impl Trait` + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-cast-add-auto-to-object warn detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto` + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + deprecated-cfg-attr-crate-type-name deny detects usage of `#![cfg_attr(..., crate_type/crate_name = "...")]` + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + wasm-c-abi deny detects dependencies that are incompatible with the Wasm C ABI + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, dependency-on-unit-never-type-fallback, deprecated-cfg-attr-crate-type-name, 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, never-type-fallback-flowing-into-unsafe, 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-calling-conventions, wasm-c-abi + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, deprecated-safe-2024, missing-unsafe-on-extern, rust-2024-prelude-collisions, static-mut-refs, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn, boxed-slice-into-iter, impl-trait-overcaptures, tail-expr-drop-order + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.83.0.txt b/outputs/1.83.0.txt @@ -0,0 +1,249 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-named-lifetimes warn detects when an elided lifetime gets resolved to be `'static` or some named parameter + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + impl-trait-redundant-captures warn redundant precise-capturing `use<...>` syntax on an `impl Trait` + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-cast-add-auto-to-object warn detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto` + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + temporary-cstring-as-ptr warn detects getting the inner pointer of a temporary `CString` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + wasm-c-abi deny detects dependencies that are incompatible with the Wasm C ABI + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, dependency-on-unit-never-type-fallback, 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, never-type-fallback-flowing-into-unsafe, 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-calling-conventions, unsupported-fn-ptr-calling-conventions, wasm-c-abi + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions, array-into-iter, non-fmt-panics + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, deprecated-safe-2024, missing-unsafe-on-extern, rust-2024-guarded-string-incompatible-syntax, rust-2024-prelude-collisions, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn, boxed-slice-into-iter, impl-trait-overcaptures, tail-expr-drop-order, if-let-rescope, static-mut-refs + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.84.0.txt b/outputs/1.84.0.txt @@ -0,0 +1,249 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + abi-unsupported-vector-types warn this function call or definition uses a vector type which is not enabled + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-named-lifetimes warn detects when an elided lifetime gets resolved to be `'static` or some named parameter + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + impl-trait-redundant-captures warn redundant precise-capturing `use<...>` syntax on an `impl Trait` + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-cast-add-auto-to-object warn detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto` + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + wasm-c-abi deny detects dependencies that are incompatible with the Wasm C ABI + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible deref-into-dyn-supertrait, abi-unsupported-vector-types, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, 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, 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 keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.84.1.txt b/outputs/1.84.1.txt @@ -0,0 +1,249 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + abi-unsupported-vector-types warn this function call or definition uses a vector type which is not enabled + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-named-lifetimes warn detects when an elided lifetime gets resolved to be `'static` or some named parameter + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + impl-trait-redundant-captures warn redundant precise-capturing `use<...>` syntax on an `impl Trait` + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-cast-add-auto-to-object warn detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto` + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + wasm-c-abi deny detects dependencies that are incompatible with the Wasm C ABI + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible deref-into-dyn-supertrait, abi-unsupported-vector-types, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, 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, 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 keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.85.0.txt b/outputs/1.85.0.txt @@ -0,0 +1,251 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + abi-unsupported-vector-types warn this function call or definition uses a vector type which is not enabled + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-named-lifetimes warn detects when an elided lifetime gets resolved to be `'static` or some named parameter + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-cast-add-auto-to-object warn detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto` + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + wasm-c-abi deny detects dependencies that are incompatible with the Wasm C ABI + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible deref-into-dyn-supertrait, abi-unsupported-vector-types, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, 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, 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 keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.85.1.txt b/outputs/1.85.1.txt @@ -0,0 +1,251 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-abi allow No declared ABI for extern declaration + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + abi-unsupported-vector-types warn this function call or definition uses a vector type which is not enabled + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-into-dyn-supertrait warn `Deref` implementation usage with a supertrait trait object for output might be shadowed in the future + deref-nullptr warn detects when an null pointer is dereferenced + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-named-lifetimes warn detects when an elided lifetime gets resolved to be `'static` or some named parameter + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-cast-add-auto-to-object warn detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto` + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + cenum-impl-drop-cast deny a C-like enum implementing Drop is cast + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + wasm-c-abi deny detects dependencies that are incompatible with the Wasm C ABI + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible deref-into-dyn-supertrait, abi-unsupported-vector-types, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, 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, 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 keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.86.0.txt b/outputs/1.86.0.txt @@ -0,0 +1,254 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + supertrait-item-shadowing-definition allow detects when a supertrait item is shadowed by a subtrait item + supertrait-item-shadowing-usage allow detects when a supertrait item is shadowed by a subtrait item + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + abi-unsupported-vector-types warn this function call or definition uses a vector type which is not enabled + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-nullptr warn detects when an null pointer is dereferenced + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-named-lifetimes warn detects when an elided lifetime gets resolved to be `'static` or some named parameter + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-cast-add-auto-to-object warn detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto` + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + order-dependent-trait-objects deny trait-object types were treated as different depending on marker-trait order + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible 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, 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 + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.87.0.txt b/outputs/1.87.0.txt @@ -0,0 +1,253 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + supertrait-item-shadowing-definition allow detects when a supertrait item is shadowed by a subtrait item + supertrait-item-shadowing-usage allow detects when a supertrait item is shadowed by a subtrait item + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + abi-unsupported-vector-types warn this function call or definition uses a vector type which is not enabled + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-nullptr warn detects when an null pointer is dereferenced + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-named-lifetimes warn detects when an elided lifetime gets resolved to be `'static` or some named parameter + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn shared references or mutable references of mutable static is discouraged + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + undefined-naked-function-abi warn undefined naked function ABI + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + warnings warn mass-change the level for lints which produce warnings + wasm-c-abi warn detects code relying on rustc's non-spec-compliant wasm C ABI + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible 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 keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.88.0.txt b/outputs/1.88.0.txt @@ -0,0 +1,254 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + supertrait-item-shadowing-definition allow detects when a supertrait item is shadowed by a subtrait item + supertrait-item-shadowing-usage allow detects when a supertrait item is shadowed by a subtrait item + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangerous-implicit-autorefs warn implicit reference to a dereference of a raw pointer + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-nullptr warn detects when an null pointer is dereferenced + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + elided-named-lifetimes warn detects when an elided lifetime gets resolved to be `'static` or some named parameter + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn creating a shared reference to mutable static + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unnecessary-transmutes warn detects transmutes that are shadowed by std methods + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + warnings warn mass-change the level for lints which produce warnings + wasm-c-abi warn detects code relying on rustc's non-spec-compliant wasm C ABI + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-null-arguments deny invalid null pointer in arguments + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + missing-fragment-specifier deny detects missing fragment specifiers in unused `macro_rules!` patterns + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible 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 keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.89.0.txt b/outputs/1.89.0.txt @@ -0,0 +1,254 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + supertrait-item-shadowing-definition allow detects when a supertrait item is shadowed by a subtrait item + supertrait-item-shadowing-usage allow detects when a supertrait item is shadowed by a subtrait item + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + aarch64-softfloat-neon warn detects code that could be affected by ABI issues on aarch64 softfloat targets + ambiguous-glob-imports warn detects certain glob imports that require reporting an ambiguity error + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-nullptr warn detects when an null pointer is dereferenced + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mismatched-lifetime-syntaxes warn detects when a lifetime uses different syntax between arguments and return values + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn creating a shared reference to mutable static + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-lints warn unrecognized lint attribute + unknown-or-malformed-diagnostic-attributes warn unrecognized or malformed diagnostic attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unnecessary-transmutes warn detects transmutes that can also be achieved by other operations + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unsupported-fn-ptr-calling-conventions warn use of unsupported calling convention for function pointer + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + dangerous-implicit-autorefs deny implicit reference to a dereference of a raw pointer + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-null-arguments deny invalid null pointer in arguments + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible aarch64-softfloat-neon, 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, 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-calling-conventions, unsupported-fn-ptr-calling-conventions + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.9.0.txt b/outputs/1.9.0.txt @@ -0,0 +1,86 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny, and deny all overrides) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + box-pointers allow use of owned (Box type) heap memory + fat-ptr-transmutes allow detects transmutes of fat pointers + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of fmt::Debug + missing-docs allow detects missing documentation for public members + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unsafe-code allow usage of `unsafe` code + unstable-features allow enabling unstable features (deprecated. do not use) + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + const-err warn constant evaluation detected erroneous expression + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + drop-with-repr-extern warn use of #[repr(C)] on a type that implements Drop + illegal-floating-point-constant-pattern warn floating-point constants cannot be used in patterns + illegal-struct-or-enum-constant-pattern warn constants of struct or enum type can only be used in a pattern if the struct or enum has `#[derive(PartialEq, Eq)]` + improper-ctypes warn proper use of libc types in foreign modules + inaccessible-extern-crate warn use of inaccessible extern crate erroneously allowed + invalid-type-param-default warn type parameter default erroneously allowed in invalid location + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + no-mangle-generic-items warn generic items must be mangled + overflowing-literals warn literal out of range for its type + overlapping-inherent-impls warn two overlapping inherent impls define an item with the same name were erroneously allowed + path-statements warn path statements with no effect + plugin-as-library warn compiler plugin used as ordinary library in non-plugin crate + private-in-public warn detect private items in public interfaces not caught by the old implementation + private-no-mangle-fns warn functions marked #[no_mangle] should be exported + private-no-mangle-statics warn statics marked #[no_mangle] should be exported + raw-pointer-derive warn uses of #[derive] with raw pointers are rarely correct + renamed-and-removed-lints warn lints that have been renamed or removed + stable-features warn stable features found in #[feature] directive + super-or-self-in-global-path warn detects super or self keywords at the beginning of global path + transmute-from-fn-item-types warn transmute from function item type to pointer-sized type erroneously allowed + unconditional-recursion warn functions that cannot return without calling themselves + unknown-lints warn unrecognized lint attribute + unreachable-code warn detects unreachable code paths + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-attributes warn detects attributes that were not used by the compiler + unused-comparisons warn comparisons made useless by limits of the types involved + unused-features warn unused or unknown features found in crate-level #[feature] directives + unused-imports warn imports that are never used + unused-must-use warn unused result of a type flagged as #[must_use] + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + exceeding-bitshifts deny shift exceeds the type's number of bits + match-of-unit-variant-via-paren-dotdot deny unit struct or enum variant erroneously allowed to match via path::ident(..) + mutable-transmutes deny mutating transmuted &mut T from &T may cause undefined behavior + no-mangle-const-items deny const items will not have their symbols exported + unknown-crate-types deny unknown crate type found in #[crate_type] directive + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all built-in lints + bad-style non-camel-case-types, non-snake-case, non-upper-case-globals + future-incompatible private-in-public, inaccessible-extern-crate, invalid-type-param-default, super-or-self-in-global-path, match-of-unit-variant-via-paren-dotdot, transmute-from-fn-item-types, overlapping-inherent-impls, illegal-floating-point-constant-pattern, illegal-struct-or-enum-constant-pattern + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unused-must-use, unused-unsafe, path-statements, unused-attributes + + +Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. diff --git a/outputs/1.90.0.txt b/outputs/1.90.0.txt @@ -0,0 +1,257 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + supertrait-item-shadowing-definition allow detects when a supertrait item is shadowed by a subtrait item + supertrait-item-shadowing-usage allow detects when a supertrait item is shadowed by a subtrait item + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + aarch64-softfloat-neon warn detects code that could be affected by ABI issues on aarch64 softfloat targets + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-nullptr warn detects when an null pointer is dereferenced + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]` + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + legacy-derive-helpers warn detects derive helper attributes that are used before they are introduced + malformed-diagnostic-attributes warn detects malformed diagnostic attributes + malformed-diagnostic-format-literals warn detects diagnostic attribute with malformed diagnostic format literals + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mismatched-lifetime-syntaxes warn detects when a lifetime uses different syntax between arguments and return values + misplaced-diagnostic-attributes warn detects diagnostic attributes that are placed on the wrong item + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + out-of-scope-macro-calls warn detects out of scope calls to `macro_rules` in key-value attributes + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + semicolon-in-expressions-from-macros warn trailing semicolon in macro body used as expression + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn creating a shared reference to mutable static + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-diagnostic-attributes warn detects unknown diagnostic attributes + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unnecessary-transmutes warn detects transmutes that can also be achieved by other operations + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + ambiguous-glob-imports deny detects certain glob imports that require reporting an ambiguity error + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + dangerous-implicit-autorefs deny implicit reference to a dereference of a raw pointer + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-null-arguments deny invalid null pointer in arguments + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible aarch64-softfloat-neon, 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, 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-calling-conventions + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unknown-or-malformed-diagnostic-attributes malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.91.0.txt b/outputs/1.91.0.txt @@ -0,0 +1,260 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + supertrait-item-shadowing-definition allow detects when a supertrait item is shadowed by a subtrait item + supertrait-item-shadowing-usage allow detects when a supertrait item is shadowed by a subtrait item + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + aarch64-softfloat-neon warn detects code that could be affected by ABI issues on aarch64 softfloat targets + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-locals warn detects returning a pointer from a local variable + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-nullptr warn detects when an null pointer is dereferenced + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[sanitize(... = "off")]` + integer-to-ptr-transmutes warn detects integer to pointer transmutes + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + macro-extended-temporary-scopes warn detects when a lifetime-extended temporary borrowed in a macro argument has a future-incompatible scope. + malformed-diagnostic-attributes warn detects malformed diagnostic attributes + malformed-diagnostic-format-literals warn detects diagnostic attribute with malformed diagnostic format literals + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mismatched-lifetime-syntaxes warn detects when a lifetime uses different syntax between arguments and return values + misplaced-diagnostic-attributes warn detects diagnostic attributes that are placed on the wrong item + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn creating a shared reference to mutable static + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-diagnostic-attributes warn detects unknown diagnostic attributes + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unnecessary-transmutes warn detects transmutes that can also be achieved by other operations + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + ambiguous-glob-imports deny detects certain glob imports that require reporting an ambiguity error + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + dangerous-implicit-autorefs deny implicit reference to a dereference of a raw pointer + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-null-arguments deny invalid null pointer in arguments + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-derive-helpers deny detects derive helper attributes that are used before they are introduced + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + out-of-scope-macro-calls deny detects out of scope calls to `macro_rules` in key-value attributes + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + semicolon-in-expressions-from-macros deny trailing semicolon in macro body used as expression + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible aarch64-softfloat-neon, 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, macro-extended-temporary-scopes, 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-calling-conventions + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unknown-or-malformed-diagnostic-attributes malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.91.1.txt b/outputs/1.91.1.txt @@ -0,0 +1,260 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + supertrait-item-shadowing-definition allow detects when a supertrait item is shadowed by a subtrait item + supertrait-item-shadowing-usage allow detects when a supertrait item is shadowed by a subtrait item + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + aarch64-softfloat-neon warn detects code that could be affected by ABI issues on aarch64 softfloat targets + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-locals warn detects returning a pointer from a local variable + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + dependency-on-unit-never-type-fallback warn never type fallback affecting unsafe function calls + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-nullptr warn detects when an null pointer is dereferenced + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[sanitize(... = "off")]` + integer-to-ptr-transmutes warn detects integer to pointer transmutes + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-macro-export-arguments warn "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + macro-extended-temporary-scopes warn detects when a lifetime-extended temporary borrowed in a macro argument has a future-incompatible scope. + malformed-diagnostic-attributes warn detects malformed diagnostic attributes + malformed-diagnostic-format-literals warn detects diagnostic attribute with malformed diagnostic format literals + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mismatched-lifetime-syntaxes warn detects when a lifetime uses different syntax between arguments and return values + misplaced-diagnostic-attributes warn detects diagnostic attributes that are placed on the wrong item + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + never-type-fallback-flowing-into-unsafe warn never type fallback affecting unsafe function calls + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn creating a shared reference to mutable static + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-diagnostic-attributes warn detects unknown diagnostic attributes + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unnecessary-transmutes warn detects transmutes that can also be achieved by other operations + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + ambiguous-glob-imports deny detects certain glob imports that require reporting an ambiguity error + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + dangerous-implicit-autorefs deny implicit reference to a dereference of a raw pointer + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-null-arguments deny invalid null pointer in arguments + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-derive-helpers deny detects derive helper attributes that are used before they are introduced + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + no-mangle-const-items deny const items will not have their symbols exported + out-of-scope-macro-calls deny detects out of scope calls to `macro_rules` in key-value attributes + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + semicolon-in-expressions-from-macros deny trailing semicolon in macro body used as expression + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible aarch64-softfloat-neon, 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, macro-extended-temporary-scopes, 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-calling-conventions + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unknown-or-malformed-diagnostic-attributes malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.92.0.txt b/outputs/1.92.0.txt @@ -0,0 +1,259 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + single-use-lifetimes allow detects lifetime parameters that are only used once + supertrait-item-shadowing-definition allow detects when a supertrait item is shadowed by a subtrait item + supertrait-item-shadowing-usage allow detects when a supertrait item is shadowed by a subtrait item + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + aarch64-softfloat-neon warn detects code that could be affected by ABI issues on aarch64 softfloat targets + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-locals warn detects returning a pointer from a local variable + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + deref-nullptr warn detects when an null pointer is dereferenced + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[sanitize(... = "off")]` + integer-to-ptr-transmutes warn detects integer to pointer transmutes + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + malformed-diagnostic-attributes warn detects malformed diagnostic attributes + malformed-diagnostic-format-literals warn detects diagnostic attribute with malformed diagnostic format literals + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mismatched-lifetime-syntaxes warn detects when a lifetime uses different syntax between arguments and return values + misplaced-diagnostic-attributes warn detects diagnostic attributes that are placed on the wrong item + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-transparent-external-private-fields warn transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn creating a shared reference to mutable static + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-diagnostic-attributes warn detects unknown diagnostic attributes + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unnecessary-transmutes warn detects transmutes that can also be achieved by other operations + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + ambiguous-glob-imports deny detects certain glob imports that require reporting an ambiguity error + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + dangerous-implicit-autorefs deny implicit reference to a dereference of a raw pointer + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + dependency-on-unit-never-type-fallback deny never type fallback affecting unsafe function calls + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-macro-export-arguments deny "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-null-arguments deny invalid null pointer in arguments + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-derive-helpers deny detects derive helper attributes that are used before they are introduced + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + never-type-fallback-flowing-into-unsafe deny never type fallback affecting unsafe function calls + no-mangle-const-items deny const items will not have their symbols exported + out-of-scope-macro-calls deny detects out of scope calls to `macro_rules` in key-value attributes + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + semicolon-in-expressions-from-macros deny trailing semicolon in macro body used as expression + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible aarch64-softfloat-neon, 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-macro-export-arguments, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, 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-calling-conventions + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unknown-or-malformed-diagnostic-attributes malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/outputs/1.93.0.txt b/outputs/1.93.0.txt @@ -0,0 +1,264 @@ + +Available lint options: + -W <foo> Warn about <foo> + -A <foo> Allow <foo> + -D <foo> Deny <foo> + -F <foo> Forbid <foo> (deny <foo> and all attempts to override) + + +Lint checks provided by rustc: + + name default meaning + ---- ------- ------- + absolute-paths-not-starting-with-crate allow fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name + ambiguous-negative-literals allow ambiguous negative literals operations + closure-returning-async-block allow closure that returns `async {}` could be rewritten as an async closure + deprecated-in-future allow detects use of items that will be deprecated in a future version + deprecated-safe-2024 allow detects unsafe functions being used as safe functions + deref-into-dyn-supertrait allow `Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting + edition-2024-expr-fragment-specifier allow The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier. + elided-lifetimes-in-paths allow hidden lifetime parameters in types are deprecated + explicit-outlives-requirements allow outlives requirements can be inferred + ffi-unwind-calls allow call to foreign functions or function pointers with FFI-unwind ABI + fuzzy-provenance-casts allow a fuzzy integer to pointer cast is used + if-let-rescope allow `if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021 + impl-trait-overcaptures allow `impl Trait` will capture more lifetimes than possibly intended in edition 2024 + impl-trait-redundant-captures allow redundant precise-capturing `use<...>` syntax on an `impl Trait` + keyword-idents-2018 allow detects edition keywords being used as an identifier + keyword-idents-2024 allow detects edition keywords being used as an identifier + let-underscore-drop allow non-binding let on a type that has a destructor + linker-messages allow warnings emitted at runtime by the target-specific linker program + lossy-provenance-casts allow a lossy pointer to integer cast is used + macro-use-extern-crate allow the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system + meta-variable-misuse allow possible meta-variable misuse at macro definition + missing-copy-implementations allow detects potentially-forgotten implementations of `Copy` + missing-debug-implementations allow detects missing implementations of Debug + missing-docs allow detects missing documentation for public members + missing-unsafe-on-extern allow detects missing unsafe keyword on extern declarations + multiple-supertrait-upcastable allow detect when a dyn-compatible trait has multiple supertraits + must-not-suspend allow use of a `#[must_not_suspend]` value across a yield point + non-ascii-idents allow detects non-ASCII identifiers + non-exhaustive-omitted-patterns allow detect when patterns of types marked `non_exhaustive` are missed + redundant-imports allow imports that are redundant due to being imported already + redundant-lifetimes allow detects lifetime parameters that are redundant because they are equal to some other named lifetime + resolving-to-items-shadowing-supertrait-items allow detects when a supertrait item is shadowed by a subtrait item + rust-2021-incompatible-closure-captures allow detects closures affected by Rust 2021 changes + rust-2021-incompatible-or-patterns allow detects usage of old versions of or-patterns + rust-2021-prefixes-incompatible-syntax allow identifiers that will be parsed as a prefix in Rust 2021 + rust-2021-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + rust-2024-guarded-string-incompatible-syntax allow will be parsed as a guarded string in Rust 2024 + rust-2024-incompatible-pat allow detects patterns whose meaning will change in Rust 2024 + rust-2024-prelude-collisions allow detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions + shadowing-supertrait-items allow detects when a supertrait item is shadowed by a subtrait item + single-use-lifetimes allow detects lifetime parameters that are only used once + tail-expr-drop-order allow Detect and warn on significant change in drop order in tail expression location + trivial-casts allow detects trivial casts which could be removed + trivial-numeric-casts allow detects trivial casts of numeric types which could be removed + unit-bindings allow binding is useless because it has the unit `()` type + unnameable-types allow effective visibility of a type is larger than the area in which it can be named + unqualified-local-imports allow `use` of a local item without leading `self::`, `super::`, or `crate::` + unreachable-pub allow `pub` items not reachable from crate root + unsafe-attr-outside-unsafe allow detects unsafe attributes outside of unsafe + unsafe-code allow usage of `unsafe` code and other potentially unsound constructs + unsafe-op-in-unsafe-fn allow unsafe operations in unsafe functions without an explicit unsafe block are deprecated + unstable-features allow enabling unstable features + unused-crate-dependencies allow crate dependencies that are never used + unused-extern-crates allow extern crates that are never used + unused-import-braces allow unnecessary braces around an imported item + unused-lifetimes allow detects lifetime parameters that are never used + unused-macro-rules allow detects macro rules that were not used + unused-qualifications allow detects unnecessarily qualified names + unused-results allow unused result of an expression in a statement + variant-size-differences allow detects enums with widely varying variant sizes + aarch64-softfloat-neon warn detects code that could be affected by ABI issues on aarch64 softfloat targets + ambiguous-glob-reexports warn ambiguous glob re-exports + ambiguous-wide-pointer-comparisons warn detects ambiguous wide pointer comparisons + anonymous-parameters warn detects anonymous parameters + array-into-iter warn detects calling `into_iter` on arrays in Rust 2015 and 2018 + asm-sub-register warn using only a subset of a register for inline asm inputs + async-fn-in-trait warn use of `async fn` in definition of a publicly-reachable trait + bad-asm-style warn incorrect use of inline assembly + bare-trait-objects warn suggest using `dyn Trait` for trait objects + boxed-slice-into-iter warn detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021 + break-with-label-and-loop warn `break` expression with label and unlabeled loop as value expression + clashing-extern-declarations warn detects when an extern fn has been declared with the same name but different types + coherence-leak-check warn distinct impls distinguished only by the leak-check code + confusable-idents warn detects visually confusable pairs between identifiers + const-evaluatable-unchecked warn detects a generic constant is used in a type without a emitting a warning + const-item-interior-mutations warn checks for calls which mutates a interior mutable const-item + const-item-mutation warn detects attempts to mutate a `const` item + dangling-pointers-from-locals warn detects returning a pointer from a local variable + dangling-pointers-from-temporaries warn detects getting a pointer from a temporary + dead-code warn detect unused, unexported items + deprecated warn detects use of deprecated items + deprecated-where-clause-location warn deprecated where clause location + double-negations warn detects expressions of the form `--x` + dropping-copy-types warn calls to `std::mem::drop` with a value that implements Copy + dropping-references warn calls to `std::mem::drop` with a reference instead of an owned value + drop-bounds warn bounds of the form `T: Drop` are most likely incorrect + duplicate-macro-attributes warn duplicated attribute + dyn-drop warn trait objects of the form `dyn Drop` are useless + ellipsis-inclusive-range-patterns warn `...` range patterns are deprecated + exported-private-dependencies warn public interface leaks type from a private dependency + forbidden-lint-groups warn applying forbid to lint-groups + forgetting-copy-types warn calls to `std::mem::forget` with a value that implements Copy + forgetting-references warn calls to `std::mem::forget` with a reference instead of an owned value + for-loops-over-fallibles warn for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let` + function-casts-as-integer warn casting a function into an integer + function-item-references warn suggest casting to a function pointer when attempting to take references to function items + hidden-glob-reexports warn name introduced by a private item shadows a name introduced by a public glob re-export + improper-ctypes warn proper use of libc types in foreign modules + improper-ctypes-definitions warn proper use of libc types in foreign item definitions + incomplete-features warn incomplete features that may function improperly in some or all cases + inline-no-sanitize warn detects incompatible use of `#[inline(always)]` and `#[sanitize(... = "off")]` + integer-to-ptr-transmutes warn detects integer to pointer transmutes + internal-features warn internal features are not supposed to be used + invalid-from-utf8 warn using a non UTF-8 literal in `std::str::from_utf8` + invalid-nan-comparisons warn detects invalid floating point NaN comparisons + invalid-value warn an invalid value is being created (such as a null reference) + irrefutable-let-patterns warn detects irrefutable patterns in `if let` and `while let` statements + large-assignments warn detects large moves or copies + late-bound-lifetime-arguments warn detects generic lifetime arguments in path segments with late bound lifetime parameters + malformed-diagnostic-attributes warn detects malformed diagnostic attributes + malformed-diagnostic-format-literals warn detects diagnostic attribute with malformed diagnostic format literals + map-unit-fn warn `Iterator::map` call that discard the iterator's values + mismatched-lifetime-syntaxes warn detects when a lifetime uses different syntax between arguments and return values + misplaced-diagnostic-attributes warn detects diagnostic attributes that are placed on the wrong item + missing-abi warn No declared ABI for extern declaration + mixed-script-confusables warn detects Unicode scripts whose mixed script confusables codepoints are solely used + named-arguments-used-positionally warn named arguments in format used positionally + non-camel-case-types warn types, variants, traits and type parameters should have camel case names + non-contiguous-range-endpoints warn detects off-by-one errors with exclusive range patterns + non-fmt-panics warn detect single-argument panic!() invocations in which the argument is not a format string + non-local-definitions warn checks for non-local definitions + non-shorthand-field-patterns warn using `Struct { x: x }` instead of `Struct { x }` in a pattern + non-snake-case warn variables, methods, functions, lifetime parameters and modules should have snake case names + non-upper-case-globals warn static constants should have uppercase identifiers + noop-method-call warn detects the use of well-known noop methods + no-mangle-generic-items warn generic items must be mangled + opaque-hidden-inferred-bound warn detects the use of nested `impl Trait` types in associated type bounds that are not general enough + overlapping-range-endpoints warn detects range patterns with overlapping endpoints + path-statements warn path statements with no effect + private-bounds warn private type in secondary interface of an item + private-interfaces warn private type in primary interface of an item + ptr-to-integer-transmute-in-consts warn detects pointer to integer transmutes in const functions and associated constants + redundant-semicolons warn detects unnecessary trailing semicolons + refining-impl-trait-internal warn impl trait in impl method signature does not match trait method signature + refining-impl-trait-reachable warn impl trait in impl method signature does not match trait method signature + renamed-and-removed-lints warn lints that have been renamed or removed + repr-c-enums-larger-than-int warn repr(C) enums with discriminant values that do not fit into a C int + rtsan-nonblocking-async warn detects incompatible uses of `#[sanitize(realtime = "nonblocking")]` on async functions + self-constructor-from-outer-item warn detect unsupported use of `Self` from outer item + special-module-name warn module declarations for files with a special meaning + stable-features warn stable features found in `#[feature]` directive + static-mut-refs warn creating a shared reference to mutable static + suspicious-double-ref-op warn suspicious call of trait method on `&&T` + trivial-bounds warn these bounds don't depend on an type parameters + type-alias-bounds warn bounds in type aliases are not enforced + tyvar-behind-raw-pointer warn raw pointer to an inference variable + uncommon-codepoints warn detects uncommon Unicode codepoints in identifiers + unconditional-recursion warn functions that cannot return without calling themselves + uncovered-param-in-projection warn impl contains type parameters that are not covered + unexpected-cfgs warn detects unexpected names and values in `#[cfg]` conditions + unfulfilled-lint-expectations warn unfulfilled lint expectation + ungated-async-fn-track-caller warn enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled + uninhabited-static warn uninhabited static + unknown-diagnostic-attributes warn detects unknown diagnostic attributes + unknown-lints warn unrecognized lint attribute + unnameable-test-items warn detects an item that cannot be named being marked as `#[test_case]` + unnecessary-transmutes warn detects transmutes that can also be achieved by other operations + unpredictable-function-pointer-comparisons warn detects unpredictable function pointer comparisons + unreachable-code warn detects unreachable code paths + unreachable-patterns warn detects unreachable patterns + unstable-name-collisions warn detects name collision with an existing but unstable method + unstable-syntax-pre-expansion warn unstable syntax can change at any point in the future, causing a hard error! + unsupported-calling-conventions warn use of unsupported calling convention + unused-allocation warn detects unnecessary allocations that can be eliminated + unused-assignments warn detect assignments that will never be read + unused-associated-type-bounds warn detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>` + unused-attributes warn detects attributes that were not used by the compiler + unused-braces warn unnecessary braces around an expression + unused-comparisons warn comparisons made useless by limits of the types involved + unused-doc-comments warn detects doc comments that aren't used by rustdoc + unused-features warn unused features found in crate-level `#[feature]` directives + unused-imports warn imports that are never used + unused-labels warn detects labels that are never used + unused-macros warn detects macros that were not used + unused-must-use warn unused result of a type flagged as `#[must_use]` + unused-mut warn detect mut variables which don't need to be mutable + unused-parens warn `if`, `match`, `while` and `return` do not need parentheses + unused-unsafe warn unnecessary use of an `unsafe` block + unused-variables warn detect variables which are not used in any way + useless-ptr-null-checks warn useless checking of non-null-typed pointer + uses-power-alignment warn Structs do not follow the power alignment rule under repr(C) + varargs-without-pattern warn detects usage of `...` arguments without a pattern in non-foreign items + warnings warn mass-change the level for lints which produce warnings + while-true warn suggest using `loop { }` instead of `while true { }` + ambiguous-associated-items deny ambiguous associated items + ambiguous-glob-imports deny detects certain glob imports that require reporting an ambiguity error + arithmetic-overflow deny arithmetic operation overflows + binary-asm-labels deny labels in inline assembly containing only 0 or 1 digits + bindings-with-variant-name deny detects pattern bindings with the same name as one of the matched variants + conflicting-repr-hints deny conflicts between `#[repr(..)]` hints that were previously accepted and used in practice + dangerous-implicit-autorefs deny implicit reference to a dereference of a raw pointer + default-overrides-default-fields deny detect `Default` impl that should use the type's default field values + dependency-on-unit-never-type-fallback deny never type fallback affecting unsafe function calls + deref-nullptr deny detects when an null pointer is dereferenced + elided-lifetimes-in-associated-constant deny elided lifetimes cannot be used in associated constants in impls + enum-intrinsics-non-enums deny detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types + explicit-builtin-cfgs-in-flags deny detects builtin cfgs set via the `--cfg` + ill-formed-attribute-input deny ill-formed attribute inputs that were previously accepted and used in practice + incomplete-include deny trailing content in included file + ineffective-unstable-trait-impl deny detects `#[unstable]` on stable trait implementations for stable types + invalid-atomic-ordering deny usage of invalid atomic ordering in atomic operations and memory fences + invalid-doc-attributes deny detects invalid `#[doc(...)]` attributes + invalid-from-utf8-unchecked deny using a non UTF-8 literal in `std::str::from_utf8_unchecked` + invalid-macro-export-arguments deny "invalid_parameter" isn't a valid argument for `#[macro_export]` + invalid-null-arguments deny invalid null pointer in arguments + invalid-reference-casting deny casts of `&T` to `&mut T` without interior mutability + invalid-type-param-default deny type parameter default erroneously allowed in invalid location + legacy-derive-helpers deny detects derive helper attributes that are used before they are introduced + let-underscore-lock deny non-binding let on a synchronization lock + long-running-const-eval deny detects long const eval operations + macro-expanded-macro-exports-accessed-by-absolute-paths deny macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths + mutable-transmutes deny transmuting &T to &mut T is undefined behavior, even if the reference is unused + named-asm-labels deny named labels in inline assembly + never-type-fallback-flowing-into-unsafe deny never type fallback affecting unsafe function calls + no-mangle-const-items deny const items will not have their symbols exported + out-of-scope-macro-calls deny detects out of scope calls to `macro_rules` in key-value attributes + overflowing-literals deny literal out of range for its type + patterns-in-fns-without-body deny patterns in functions without body were erroneously allowed + proc-macro-derive-resolution-fallback deny detects proc macro derives using inaccessible names from parent modules + pub-use-of-private-extern-crate deny detect public re-exports of private extern crates + repr-transparent-non-zst-fields deny transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields + semicolon-in-expressions-from-macros deny trailing semicolon in macro body used as expression + soft-unstable deny a feature gate that doesn't break dependent crates + test-unstable-lint deny this unstable lint is only for testing + text-direction-codepoint-in-comment deny invisible directionality-changing codepoints in comment + text-direction-codepoint-in-literal deny detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows + unconditional-panic deny operation will cause a panic at runtime + undropped-manually-drops deny calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value + unknown-crate-types deny unknown crate type found in `#[crate_type]` directive + useless-deprecated deny detects deprecation attributes with no effect + + +Lint groups provided by rustc: + + name sub-lints + ---- --------- + warnings all lints that are set to issue warnings + deprecated-safe deprecated-safe-2024 + future-incompatible aarch64-softfloat-neon, 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-macro-export-arguments, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, out-of-scope-macro-calls, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-c-enums-larger-than-int, repr-transparent-non-zst-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-calling-conventions, varargs-without-pattern + keyword-idents keyword-idents-2018, keyword-idents-2024 + let-underscore let-underscore-drop, let-underscore-lock + nonstandard-style non-camel-case-types, non-snake-case, non-upper-case-globals + refining-impl-trait refining-impl-trait-reachable, refining-impl-trait-internal + rust-2018-compatibility keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer + rust-2018-idioms bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements + rust-2021-compatibility ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions + rust-2024-compatibility keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-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, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn + unknown-or-malformed-diagnostic-attributes malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes + unused unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn + + +Lint tools like Clippy can load additional lints and lint groups. diff --git a/src/args.rs b/src/args.rs @@ -0,0 +1,260 @@ +use super::{ + ExitCode, + io::{self, Write as _}, +}; +use std::ffi::OsString; +/// Error from parsing CLI arguments. +#[cfg_attr(test, derive(Debug, PartialEq))] +pub(crate) enum E { + /// No arguments exist including the name of the program which is assumed to be the first argument. + NoArgs, + /// The contained string is not an argument that is supported. + UnknownArg(OsString), +} +impl E { + /// Writes `self` to `stderr`. + pub(crate) fn into_exit_code(self) -> ExitCode { + let mut stderr = io::stderr().lock(); + match self { + Self::NoArgs => writeln!( + stderr, + "No arguments were passed including the first argument which is assumed to be the name of the program. See lints help for more information." + ), + Self::UnknownArg(arg) => writeln!( + stderr, + "Unrecognized argument '{}' was passed. See lints help for more information.", + arg.display() + ), + }.map_or(ExitCode::FAILURE, |()| ExitCode::FAILURE) + } +} +/// The command passed. +#[cfg_attr(test, derive(Debug, PartialEq))] +pub(crate) enum Cmd { + /// `"allow"` all lints. + /// + /// The first contained `bool` is `true` iff all lint groups and individual lints should be `allow`ed + /// instead of just `"warnings"` lint group and `deny`-by-default lints. + /// The second contained `bool` is `true` iff lint groups are allowed to contain undefined lints. + Allow(bool, bool), + /// `"deny"`. + /// + /// The first contained `bool` is `true` iff all individual lints should be `deny`ed instead of just + /// the lint groups and `allow`-by-default lints that are not part of any group. + /// The second contained `bool` is `true` iff lint groups are allowed to contain undefined lints. + Deny(bool, bool), + /// `"help"`. + Help, + /// `"version"`. + Version, +} +/// Options we allow. +#[derive(Clone, Copy)] +enum Opt { + /// No option. + None, + /// `"--all"`. + All, + /// `"--allow-undefined-lints"`. + AllowUndefined, + /// `"--all"` and `"--allow-undefined-lints"`. + AllAndAllowUndefined, +} +impl Cmd { + /// Extracts options from `opts`. + fn get_opts<I: Iterator<Item = OsString>>( + mut opts: I, + opt: Opt, + arg: OsString, + ) -> Result<Opt, E> { + /// `b"--all"`. + const ALL: &[u8] = b"--all".as_slice(); + /// `b"--allow-undefined-lints"`. + const ALLOW_UNDEFINED_LINTS: &[u8] = b"--allow-undefined-lints".as_slice(); + match arg.as_encoded_bytes() { + ALL => match opt { + Opt::None => Ok(Opt::All), + Opt::All | Opt::AllAndAllowUndefined => Err(E::UnknownArg(arg)), + Opt::AllowUndefined => Ok(Opt::AllAndAllowUndefined), + }, + ALLOW_UNDEFINED_LINTS => match opt { + Opt::None => Ok(Opt::AllowUndefined), + Opt::AllowUndefined | Opt::AllAndAllowUndefined => Err(E::UnknownArg(arg)), + Opt::All => Ok(Opt::AllAndAllowUndefined), + }, + _ => Err(E::UnknownArg(arg)), + } + .and_then(|opt2| { + opts.next() + .map_or(Ok(opt2), |nxt| Self::get_opts(opts, opt2, nxt)) + }) + } + /// Parses the CLI arguments. + #[expect(clippy::unreachable, reason = "want to crash when there is a bug")] + pub(crate) fn try_from_args<I: IntoIterator<Item = OsString>>(iter: I) -> Result<Self, E> { + let mut args = iter.into_iter(); + args.next().ok_or(E::NoArgs).and_then(|_| { + args.next().map_or(Ok(Self::Deny(false, false)), |cmd| { + match cmd.as_encoded_bytes() { + b"allow" => args.next().map_or(Ok(Self::Allow(false, false)), |arg| { + Self::get_opts(args, Opt::None, arg).map(|opt| match opt { + Opt::None => unreachable!("bug in args::Cmd::get_ops"), + Opt::All => Self::Allow(true, false), + Opt::AllowUndefined => Self::Allow(false, true), + Opt::AllAndAllowUndefined => Self::Allow(true, true), + }) + }), + b"deny" => args.next().map_or(Ok(Self::Deny(false, false)), |arg| { + Self::get_opts(args, Opt::None, arg).map(|opt| match opt { + Opt::None => unreachable!("bug in args::Cmd::get_ops"), + Opt::All => Self::Deny(true, false), + Opt::AllowUndefined => Self::Deny(false, true), + Opt::AllAndAllowUndefined => Self::Deny(true, true), + }) + }), + b"help" => args + .next() + .map_or(Ok(Self::Help), |opt| Err(E::UnknownArg(opt))), + b"version" => args + .next() + .map_or(Ok(Self::Version), |opt| Err(E::UnknownArg(opt))), + _ => Self::get_opts(args, Opt::None, cmd).map(|opt| match opt { + Opt::None => unreachable!("bug in args::Cmd::get_ops"), + Opt::All => Self::Deny(true, false), + Opt::AllowUndefined => Self::Deny(false, true), + Opt::AllAndAllowUndefined => Self::Deny(true, true), + }), + } + }) + }) + } +} +#[cfg(test)] +mod tests { + use super::{Cmd, E}; + #[test] + fn successes() { + assert_eq!(Cmd::try_from_args(["".into()]), Ok(Cmd::Deny(false, false))); + assert_eq!( + Cmd::try_from_args(["".into(), "--all".into()]), + Ok(Cmd::Deny(true, false)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "--allow-undefined-lints".into()]), + Ok(Cmd::Deny(false, true)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "--all".into(), "--allow-undefined-lints".into()]), + Ok(Cmd::Deny(true, true)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "allow".into()]), + Ok(Cmd::Allow(false, false)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "allow".into(), "--all".into()]), + Ok(Cmd::Allow(true, false)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "allow".into(), "--allow-undefined-lints".into()]), + Ok(Cmd::Allow(false, true)) + ); + assert_eq!( + Cmd::try_from_args([ + "".into(), + "allow".into(), + "--allow-undefined-lints".into(), + "--all".into() + ]), + Ok(Cmd::Allow(true, true)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "deny".into()]), + Ok(Cmd::Deny(false, false)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "deny".into(), "--all".into()]), + Ok(Cmd::Deny(true, false)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "deny".into(), "--allow-undefined-lints".into()]), + Ok(Cmd::Deny(false, true)) + ); + assert_eq!( + Cmd::try_from_args([ + "".into(), + "deny".into(), + "--all".into(), + "--allow-undefined-lints".into() + ]), + Ok(Cmd::Deny(true, true)) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "help".into()]), + Ok(Cmd::Help) + ); + assert_eq!( + Cmd::try_from_args(["doesn't matter what this is".into(), "version".into()]), + Ok(Cmd::Version) + ); + } + #[test] + fn errs() { + assert_eq!(Cmd::try_from_args([]), Err(E::NoArgs)); + assert_eq!( + Cmd::try_from_args(["".into(), "".into()]), + Err(E::UnknownArg("".into())) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "foo".into()]), + Err(E::UnknownArg("foo".into())) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "help".into(), "version".into()]), + Err(E::UnknownArg("version".into())) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "version".into(), "allow".into()]), + Err(E::UnknownArg("allow".into())) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "allow".into(), "allow".into()]), + Err(E::UnknownArg("allow".into())) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "deny".into(), "allow".into()]), + Err(E::UnknownArg("allow".into())) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "--all".into(), "allow".into()]), + Err(E::UnknownArg("allow".into())) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "--allow-undefined-lints".into(), "deny".into()]), + Err(E::UnknownArg("deny".into())) + ); + assert_eq!( + Cmd::try_from_args(["".into(), "deny".into(), "--all".into(), "".into()]), + Err(E::UnknownArg("".into())) + ); + assert_eq!( + Cmd::try_from_args([ + "".into(), + "--all".into(), + "--allow-undefined-lints".into(), + "--all".into() + ]), + Err(E::UnknownArg("--all".into())) + ); + assert_eq!( + Cmd::try_from_args([ + "".into(), + "deny".into(), + "--all".into(), + "--allow-undefined-lints".into(), + "foo".into() + ]), + Err(E::UnknownArg("foo".into())) + ); + } +} diff --git a/src/cmd.rs b/src/cmd.rs @@ -0,0 +1,240 @@ +extern crate alloc; +use super::{ + Error, ExitCode, + io::{self, Write as _}, +}; +#[cfg(target_os = "openbsd")] +use super::{Permissions, Promises, env}; +use alloc::string::FromUtf8Error; +#[cfg(target_os = "openbsd")] +use std::{ffi::OsStr, fs, io::ErrorKind}; +use std::{ + path::{Path, PathBuf}, + process::{Command, Stdio}, +}; +/// Error when executing `rustc -Whelp`. +pub(crate) enum E { + /// I/O error. + Io(Error), + /// Error when there is no `$PATH` variable. + #[cfg(target_os = "openbsd")] + NoPathVariable, + /// Error when `"rustc"` is unable to be located in `$PATH`. + #[cfg(target_os = "openbsd")] + NoRustcInPath, + /// `rustc -Whelp` didn't return a status code, and nothing was written to `stderr`. + RustcNoStatusNoErr, + /// `rustc -Whelp` didn't return a status code, and invalid UTF-8 was written to `stderr`. + RustcNoStatusInvalidUtf8(FromUtf8Error), + /// `rustc -Whelp` didn't return a status code, and the contained `String` was written to `stderr`. + RustcNoStatusErr(String), + /// `rustc -Whelp` returned an error code, but nothing was written to `stderr`. + RustcErrStatusNoErr(i32), + /// `rustc -Whelp` returned an error code, but `stderr` contained invalid UTF-8. + RustcErrStatusInvalidUtf8(i32, FromUtf8Error), + /// `rustc -Whelp` returned an error code, and the contained `String` was written to `stderr`. + RustcErrStatus(i32, String), + /// `rustc -Whelp` returned a success code, but `stderr` contained invalid UTF-8. + RustcSuccessErrInvalidUtf8(FromUtf8Error), + /// `rustc -Whelp` returned a success code, but the contained `String` was written to `stderr`. + RustcSuccessErr(String), +} +impl E { + /// Writes `self` into `stderr`. + pub(crate) fn into_exit_code(self) -> ExitCode { + let mut stderr = io::stderr().lock(); + match self { + Self::Io(err) => writeln!(stderr, "I/O issue: {err}."), + #[cfg(target_os = "openbsd")] + Self::NoPathVariable => writeln!( + stderr, + "No PATH variable." + ), + #[cfg(target_os = "openbsd")] + Self::NoRustcInPath => writeln!( + stderr, + "rustc could not be found based on the PATH variable." + ), + Self::RustcNoStatusNoErr => writeln!( + stderr, + "rustc -Whelp didn't return a status code but didn't write anything to stderr." + ), + Self::RustcNoStatusInvalidUtf8(err) => writeln!( + stderr, + "rustc -Whelp didn't return a status code, but stderr contained invalid UTF-8: {err}." + ), + Self::RustcNoStatusErr(err) => writeln!( + stderr, + "rustc -Whelp didn't return a status code, and the following was written to stderr: {err}." + ), + Self::RustcErrStatusNoErr(code) => writeln!( + stderr, + "rustc -Whelp returned status {code}, but didn't write anything to stderr." + ), + Self::RustcErrStatusInvalidUtf8(code, err) => writeln!( + stderr, + "rustc -Whelp returned status {code}, but stderr contained invalid UTF-8: {err}." + ), + Self::RustcErrStatus(code, err) => writeln!( + stderr, + "rustc -Whelp returned status {code}, and the following was written to stderr: {err}." + ), + Self::RustcSuccessErrInvalidUtf8(err) => writeln!( + stderr, + "rustc -Whelp returned a successful status code, but stderr contained invalid UTF-8: {err}." + ), + Self::RustcSuccessErr(err) => writeln!( + stderr, + "rustc -Whelp returned a successful status code, but the following was written to stderr: {err}." + ), + }.map_or(ExitCode::FAILURE, |()| ExitCode::FAILURE) + } +} +/// `"rustc"`. +const RUSTC: &str = "rustc"; +/// Returns [`RUSTC`] as a `PathBuf`. +#[expect(clippy::unnecessary_wraps, reason = "unify with OpenBSD")] +#[cfg(not(target_os = "openbsd"))] +fn priv_sep<Never>() -> Result<PathBuf, Never> { + Ok(RUSTC.into()) +} +/// `unveil(2)`s the file system for read-only permissions. +/// Traverses `$PATH` to find `"rustc"`; when found, removes read permissions on the file system before +/// `unveil(2)`ing `"rustc"` with execute permissions. Last, `pledge(2)`s `c"exec proc stdio unveil"`. +#[expect(unsafe_code, reason = "comment justifies correctness")] +#[expect(clippy::option_if_let_else, reason = "false positive")] +#[cfg(target_os = "openbsd")] +fn priv_sep() -> Result<PathBuf, E> { + Permissions::unveil_raw(c"/", c"r") + .map_err(|e| E::Io(e.into())) + .and_then(|()| { + env::var_os("PATH").map_or(Err(E::NoPathVariable), |path| { + path.as_encoded_bytes() + .split(|b| *b == b':') + .try_fold((), |(), dir| { + // SAFETY: + // `dir` is obtained directly from `path.as_encoded_bytes` with at most a single + // `b':'` removed ensuring any valid UTF-8 that existed before still does. + let dir_os = unsafe { OsStr::from_encoded_bytes_unchecked(dir) }; + fs::read_dir(dir_os).map_or_else( + |e| { + if matches!(e.kind(), ErrorKind::NotADirectory) { + let val = PathBuf::from(dir_os); + match val.file_name() { + None => Ok(()), + Some(file) => { + if file == RUSTC { + Err(val) + } else { + Ok(()) + } + } + } + } else { + Ok(()) + } + }, + |mut ents| { + ents.try_fold((), |(), ent_res| { + ent_res.map_or(Ok(()), |ent| { + if ent.file_name() == RUSTC { + Err(PathBuf::from(dir_os).join(RUSTC)) + } else { + Ok(()) + } + }) + }) + }, + ) + }) + .map_or_else( + |rustc| { + Permissions::unveil_raw(c"/", c"") + .and_then(|()| { + Permissions::unveil_raw(&rustc, c"x").and_then(|()| { + Promises::pledge_raw(c"exec proc stdio unveil") + .map(|()| rustc) + }) + }) + .map_err(|e| E::Io(e.into())) + }, + |()| Err(E::NoRustcInPath), + ) + }) + }) +} +/// No-op. +#[expect(clippy::unnecessary_wraps, reason = "unify with OpenBSD")] +#[cfg(not(target_os = "openbsd"))] +const fn priv_sep_final<Never>(_: &Path) -> Result<(), Never> { + Ok(()) +} +/// Removes execute permissions on `path` before `pledge(2)`ing `c"stdio"`. +#[cfg(target_os = "openbsd")] +fn priv_sep_final(path: &Path) -> Result<(), E> { + Permissions::unveil_raw(path, c"") + .and_then(|()| Promises::pledge_raw(c"stdio")) + .map_err(|e| E::Io(e.into())) +} +/// Gets output of `rustc -Whelp`. +pub(crate) fn execute_rustc() -> Result<Vec<u8>, E> { + priv_sep().and_then(|path| { + Command::new(&path) + .arg("-Whelp") + .stderr(Stdio::piped()) + .stdin(Stdio::null()) + .stdout(Stdio::piped()) + .output() + .map_err(E::Io) + .and_then(|output| { + priv_sep_final(&path).and_then(|()| match output.status.code() { + None => { + if output.stderr.is_empty() { + Err(E::RustcNoStatusNoErr) + } else { + String::from_utf8(output.stderr) + .map_err(E::RustcNoStatusInvalidUtf8) + .and_then(|err| Err(E::RustcNoStatusErr(err))) + } + } + Some(code) => { + if code == 0i32 { + if output.stderr.is_empty() { + Ok(output.stdout) + } else { + String::from_utf8(output.stderr) + .map_err(E::RustcSuccessErrInvalidUtf8) + .and_then(|err| Err(E::RustcSuccessErr(err))) + } + } else if output.stderr.is_empty() { + Err(E::RustcErrStatusNoErr(code)) + } else { + String::from_utf8(output.stderr) + .map_err(|err| E::RustcErrStatusInvalidUtf8(code, err)) + .and_then(|err| Err(E::RustcErrStatus(code, err))) + } + } + }) + }) + }) +} +#[cfg(test)] +mod tests { + #[cfg(not(target_os = "openbsd"))] + use core::convert::Infallible; + #[cfg(target_os = "openbsd")] + use std::ffi::OsString; + #[test] + #[cfg(not(target_os = "openbsd"))] + fn priv_sep() { + assert_eq!(super::priv_sep::<Infallible>(), Ok("rustc".into())); + } + #[ignore = "interferes with testing. should run separately to avoid issues."] + #[test] + #[cfg(target_os = "openbsd")] + fn priv_sep() { + assert!(super::priv_sep().is_ok_and( + |path| path.is_absolute() && path.file_name() == Some(&OsString::from("rustc")) + )); + } +} diff --git a/src/main.rs b/src/main.rs @@ -0,0 +1,187 @@ +//! Consult [`README.md`](https://crates.io/crates/lints/). +/// CLI-argument parsing. +mod args; +/// `rustc` execution. +mod cmd; +/// Parsing of `rustc -Whelp` output. +mod parse; +use args::{Cmd, E as ArgsErr}; +use cmd::E as CmdErr; +use core::{convert, str}; +use parse::{Data, E as ParseErr, LintGroup, WARNINGS}; +#[cfg(target_os = "openbsd")] +use priv_sep::{Permissions, Promises}; +use std::{ + collections::HashSet, + env, + io::{self, Error, Write as _}, + process::ExitCode, +}; +/// Writes `err` to `stderr`. +#[expect( + clippy::needless_pass_by_value, + reason = "Error is small and makes the signature more pleasant when dealing with Result::map_or_else" +)] +fn into_exit_code(err: Error) -> ExitCode { + writeln!(io::stderr().lock(), "{err}").map_or(ExitCode::FAILURE, |()| ExitCode::FAILURE) +} +/// Help message. +const HELP_MSG: &str = + "Denies or allows all lints based on rustc -Whelp and what command is passed + +Usage: lints [COMMAND] [OPTIONS] + +Commands: + allow Allows all lints + deny Denies all lints + help This message + version Prints version info + +Options: + --all Writes all individual lints even if they're already part of a lint group + --allow-undefined-lints Lint groups that contain undefined lints are allowed + +When nothing or deny is passed, all lint groups and allow-by-default lints that are not part of a group +are set to deny. +When allow is passed, \"warnings\" and all deny-by-default lints are set to allow. +stdout is written to in the format of the TOML table, lints.rust, which can be added to Cargo.toml."; +/// Version of `lints`. +const VERSION: &str = concat!("lints ", env!("CARGO_PKG_VERSION")); +/// No-op. +#[expect(clippy::unnecessary_wraps, reason = "unify with OpenBSD")] +#[cfg(not(target_os = "openbsd"))] +const fn priv_sep<Never>() -> Result<(), Never> { + Ok(()) +} +/// `pledge(2)`s `c"exec proc rpath stdio unveil"` before `unveil(2)`ing no file-system access. +#[cfg(target_os = "openbsd")] +fn priv_sep() -> Result<(), Error> { + Promises::pledge_raw(c"exec proc rpath stdio unveil") + .and_then(|()| Permissions::unveil_raw(c"/", c"")) + .map_err(Error::from) +} +/// Transforms `ascii` into a `str` based on the assumption that it's already been verified to be valid +/// UTF-8. +#[expect(clippy::unreachable, reason = "want to crash when there is a bug")] +fn as_str(ascii: &[u8]) -> &str { + str::from_utf8(ascii).unwrap_or_else(|_e| { + unreachable!("names of lints and lint groups are verified to be a subset of ASCII") + }) +} +/// Entry to application. +#[expect(clippy::too_many_lines, reason = "101 lines is OK")] +fn main() -> ExitCode { + priv_sep().map_or_else(into_exit_code, |()| { + Cmd::try_from_args(env::args_os()).map_or_else(ArgsErr::into_exit_code, |cmd| match cmd { + Cmd::Allow(all, allow_undefined) | Cmd::Deny(all, allow_undefined) => { + cmd::execute_rustc().map_or_else(CmdErr::into_exit_code, |output| { + Data::new(&output, allow_undefined) + .map_err(ParseErr::into_exit_code) + .and_then(|mut data| { + let mut stdout = io::stdout().lock(); + if all { + let level = if matches!(cmd, Cmd::Allow(_, _)) { + "allow" + } else { + "deny" + }; + // Since `"warnings"` is both a lint and lint group, `data.groups` + // does not contain it; instead `data.warn` is the set of all + // `warn`-by-default lints sans the lint `"warnings"`. + // We write groups first, so we add an empty `"warnings"` group. + data.groups.push(LintGroup { + name: WARNINGS.as_bytes(), + lints: HashSet::new(), + }); + data.groups.sort_unstable(); + data.groups + .into_iter() + .try_fold((), |(), group| { + writeln!( + stdout, + "{} = {{ level = \"{level}\", priority = -1 }}", + as_str(group.name) + ) + }) + .and_then(|()| { + // There are likely more `warn`-by-default lints, so + // we use its memory allocation to append the other lints. + data.warn.extend_from_slice(&data.allow); + // Reduce memory when we can. + drop(data.allow); + data.warn.extend_from_slice(&data.deny); + // Reduce memory when we can. + drop(data.deny); + data.warn.sort_unstable(); + data.warn.iter().try_fold((), |(), lint| { + writeln!( + stdout, + "{} = {{ level = \"{level}\", priority = -1 }}", + as_str(lint) + ) + }) + }) + } else if matches!(cmd, Cmd::Allow(_, _)) { + writeln!( + stdout, + "{WARNINGS} = {{ level = \"allow\", priority = -1 }}" + ) + .and_then(|()| { + data.deny.iter().try_fold((), |(), lint| { + writeln!( + stdout, + "{} = {{ level = \"allow\", priority = -1 }}", + as_str(lint) + ) + }) + }) + } else { + // Since `"warnings"` is both a lint and lint group, `data.groups` + // does not contain it; instead `data.warn` is the set of all + // `warn`-by-default lints sans the lint `"warnings"`. + // We write groups first, so we add an empty `"warnings"` group. + data.groups.push(LintGroup { + name: WARNINGS.as_bytes(), + lints: HashSet::new(), + }); + data.groups.sort_unstable(); + data.groups + .iter() + .try_fold((), |(), group| { + writeln!( + stdout, + "{} = {{ level = \"deny\", priority = -1 }}", + as_str(group.name) + ) + }) + .and_then(|()| { + data.allow.iter().try_fold((), |(), lint| { + if data.groups.iter().any(|group| { + group + .lints + .iter() + .any(|group_lint| group_lint == lint) + }) { + Ok(()) + } else { + writeln!( + stdout, + "{} = {{ level = \"deny\", priority = -1 }}", + as_str(lint) + ) + } + }) + }) + } + .map_err(into_exit_code) + }) + .map_or_else(convert::identity, |()| ExitCode::SUCCESS) + }) + } + Cmd::Help => writeln!(io::stdout().lock(), "{HELP_MSG}") + .map_or_else(into_exit_code, |()| ExitCode::SUCCESS), + Cmd::Version => writeln!(io::stdout().lock(), "{VERSION}") + .map_or_else(into_exit_code, |()| ExitCode::SUCCESS), + }) + }) +} diff --git a/src/parse.rs b/src/parse.rs @@ -0,0 +1,688 @@ +use super::{ + ExitCode, HashSet, convert, + io::{self, Write as _}, +}; +use core::{ + cmp::Ordering, + hash::{Hash, Hasher}, +}; +// We skip all lines until: "name default meaning" trimming leading spaces. +// We verify the next line is "---- ------- -------" trimming leading spaces. +// +// Next we grab the lints. +// The regex for lints is verified to be `^ *[\-0-9A-Za-z]+ +(allow|warn|deny) +.*$`. +// +// We verify all three kinds of lints are non-empty and no lint exists more than once. We verify the +// `warn` lints contain a lint called "warnings" which does not count towards the emptiness of +// `warn` lints. +// +// Next we skip all lines until: "name sub-lints" trimming leading spaces. +// We verify the next line is "---- ---------" trimming leading spaces. +// +// Next we grab the lint groups. +// The regex for lint groups is verified to be `^ +[\-0-9A-Za-z]+ +[ ,\-0-9A-Za-z]+$`. +// +// We verify lint group names are unique among themselves and the individual lints sans `"warnings"` +// which is allowed to exist. +// We verify the lint groups are non-empty except "warnings" if it is defined. +// We verify each lint in a lint group is unique. +// We verify each lint is the name of one of the lints unless `--allow-undefined-lints` was passed. +// We verify when there is multiple lints, each lint is separated with a single comma and space. +/// Error from parsing. +#[cfg_attr(test, derive(Debug, PartialEq))] +pub(crate) enum E<'a> { + /// Output doesn't start as expected. + Start, + /// The contained line is not the format of a lint. + UnexpectedLintLine(&'a [u8]), + /// The contained lint appeared more than once. + DuplicateLint(&'a [u8]), + /// There wasn't a `warn`-by-default lint called `"warnings"`. + MissingWarningLint, + /// There were no `allow`-by-default lints. + NoAllowLints, + /// There were no `warn`-by-default lints except for `"warnings"`. + NoWarnLints, + /// There were no `deny`-by-default lints. + NoDenyLints, + /// Output doesn't contain what it should between the lints and lint groups. + Middle, + /// The contained line is not the format of a lint group. + UnexpectedLintGroupLine(&'a [u8]), + /// The contained lint group name appeared more than once. + DuplicateLintGroup(&'a [u8]), + /// The contained lint group name is the same as the name of a lint. + LintSameNameAsLintGroup(&'a [u8]), + /// The contained lint group name contained a lint more than once. + LintGroupContainsDuplicateLint(&'a [u8], &'a [u8]), + /// The contained lint group name contained an unknown lint. + LintGroupContainsUnknownLint(&'a [u8], &'a [u8]), + /// The contained lint group name has no lints. + EmptyLintGroup(&'a [u8]), + /// There were no lint groups. + NoLintGroups, + /// Output doesn't end as expected. + End, +} +/// Lines before lints. +const START: &str = "name default meaning +---- ------- -------"; +/// Lines between lints and lint groups. +const MIDDLE: &str = "name sub-lints +---- ---------"; +impl E<'_> { + /// Writes `self` into `stderr`. + pub(crate) fn into_exit_code(self) -> ExitCode { + let mut stderr = io::stderr().lock(); + match self { + Self::Start => writeln!(stderr, "rustc -Whelp doesn't contain '{START}' ignoring leading spaces"), + Self::UnexpectedLintLine(line) => writeln!( + stderr, + "rustc -Whelp contained the following line that is not the expected format of a lint: {}.", + String::from_utf8_lossy(line), + ), + Self::DuplicateLint(lint) => writeln!( + stderr, + "rustc -Whelp contained the lint '{}' more than once.", + super::as_str(lint) + ), + Self::MissingWarningLint => writeln!( + stderr, + "rustc -Whelp didn't contain a warn-by-default lint called 'warnings'." + ), + Self::NoAllowLints => writeln!( + stderr, + "rustc -Whelp didn't contain any allow-by-default lints." + ), + Self::NoWarnLints => writeln!( + stderr, + "rustc -Whelp didn't contain any warn-by-default lints except for 'warnings'." + ), + Self::NoDenyLints => writeln!( + stderr, + "rustc -Whelp didn't contain any deny-by-default lints." + ), + Self::Middle => writeln!( + stderr, + "rustc -Whelp doesn't contain '{MIDDLE}' ignoring leading spaces after the lints." + ), + Self::UnexpectedLintGroupLine(line) => writeln!( + stderr, + "rustc -Whelp contained the following line that is not the expected format of a lint group: {}.", + String::from_utf8_lossy(line), + ), + Self::DuplicateLintGroup(group) => { + writeln!( + stderr, + "rustc -Whelp contained multiple lint groups called '{}'.", + super::as_str(group) + ) + } + Self::LintSameNameAsLintGroup(group) => { + writeln!( + stderr, + "rustc -Whelp contained a lint and lint group both named '{}'.", + super::as_str(group) + ) + } + Self::LintGroupContainsDuplicateLint(group, lint) => writeln!( + stderr, + "rustc -Whelp contained the lint group '{}' which has the lint '{}' more than once.", + super::as_str(group), + super::as_str(lint), + ), + Self::LintGroupContainsUnknownLint(group, lint) => writeln!( + stderr, + "rustc -Whelp contained the lint group '{}' which has the unknown lint '{}'.", + super::as_str(group), + super::as_str(lint), + ), + Self::EmptyLintGroup(group) => { + writeln!( + stderr, + "rustc -Whelp contained the empty lint group '{}'.", + super::as_str(group), + ) + } + Self::NoLintGroups => writeln!( + stderr, + "rustc -Whelp didn't contain any lint groups." + ), + Self::End => writeln!(stderr, "rustc -Whelp did not have at least one empty line after the lint groups."), + }.map_or(ExitCode::FAILURE, |()| ExitCode::FAILURE) + } +} +/// Moves `line` to start at the first non-space. +#[expect( + clippy::arithmetic_side_effects, + clippy::indexing_slicing, + reason = "comments justifies correctness" +)] +fn skip_leading_space(line: &mut &[u8]) { + // The `usize` contained in the `Result` is at most `line.len()`, we indexing is fine. + *line = &line[line + .iter() + .try_fold(0, |idx, b| { + if *b == b' ' { + // `idx < line.len()`, so overflow is not possible. + Ok(idx + 1) + } else { + Err(idx) + } + }) + .map_or_else(convert::identity, convert::identity)..]; +} +/// [`Iterator`] of lines. +/// +/// In the event a `b'\n'` doesn't exist, `None` will be returned. This means in the event the last +/// "line" does not end with `b'\n'`, it won't be returned. +struct Lines<'a>(&'a [u8]); +impl<'a> Iterator for Lines<'a> { + type Item = &'a [u8]; + #[expect( + clippy::arithmetic_side_effects, + clippy::indexing_slicing, + reason = "comments justify correctness" + )] + fn next(&mut self) -> Option<Self::Item> { + self.0 + .iter() + .try_fold(0, |idx, b| { + if *b == b'\n' { + Err(idx) + } else { + // `idx < self.0.len()`, so overflow is not possible. + Ok(idx + 1) + } + }) + .map_or_else( + |idx| { + // `idx <= self.0.len()`, so this won't `panic`. + let (val, rem) = self.0.split_at(idx); + // `rem` starts with a newline, so this won't `panic`. + self.0 = &rem[1..]; + Some(val) + }, + |_| None, + ) + } +} +/// Extracts the lint or lint group name from `line`. +/// +/// Returns `Some` iff a valid lint or lint group name is found ignoring leading spaces and +/// if there is non-spaces after. The first `slice` is the name and the second slice is +/// the remaining portion of `line` with leading spaces removed. +#[expect( + clippy::arithmetic_side_effects, + reason = "comment justifies correctness" +)] +fn get_lint_name(mut line: &[u8]) -> Option<(&[u8], &[u8])> { + skip_leading_space(&mut line); + line.iter() + .try_fold(0, |idx, b| { + if *b == b' ' { + Err(Some(idx)) + } else if *b == b'-' || b.is_ascii_alphanumeric() { + // `idx < line.len()`, so overflow is not possible. + Ok(idx + 1) + } else { + Err(None) + } + }) + .map_or_else( + |opt| { + opt.and_then(|idx| { + let (name, mut rem) = line.split_at(idx); + let len = rem.len(); + skip_leading_space(&mut rem); + if len == rem.len() { + None + } else { + Some((name, rem)) + } + }) + }, + |_| None, + ) +} +/// The lints. +/// +/// All `HashSet`s are non-empty with no overlap. `warn` doesn't contain `"warnings"`. +struct Lints<'a> { + /// `allow`-by-default lints. + allow: HashSet<&'a [u8]>, + /// `warn`-by-default lints. + warn: HashSet<&'a [u8]>, + /// `deny`-by-default lints. + deny: HashSet<&'a [u8]>, +} +/// `"warnings"`. +pub(crate) const WARNINGS: &str = "warnings"; +impl<'a> Lints<'a> { + /// Gets the lints from `lines` erring when there are duplicates, there is no `warn`-by-default + /// lint called `"warnings"`, or the lints are empty (ignoring the `"warnings"` lint). + #[expect( + clippy::arithmetic_side_effects, + clippy::indexing_slicing, + reason = "comments justify correctness" + )] + fn new(lines: &mut Lines<'a>) -> Result<Self, E<'a>> { + /// Get the lint from `line`. + /// + /// Returns `Some` iff a valid lint name is found after removing leading spaces. + /// The first `slice` is the name, and the second `slice` is the next "word". + fn get_lint(line: &[u8]) -> Option<(&[u8], &[u8])> { + get_lint_name(line).and_then(|(lint, rem)| { + rem.iter() + // `idx < rem.len()`, so overflow is not possible. + .try_fold(0, |idx, b| if *b == b' ' { Err(idx) } else { Ok(idx + 1) }) + // `idx <= rem.len()`, so this won't `panic`. + .map_or_else(|idx| Some((lint, &rem[..idx])), |_| None) + }) + } + let mut allow = HashSet::with_capacity(128); + let mut warn = HashSet::with_capacity(128); + let mut deny = HashSet::with_capacity(128); + lines + .try_fold((), |(), line| { + if line.is_empty() { + Err(None) + } else { + get_lint(line) + .ok_or(Some(E::UnexpectedLintLine(line))) + .and_then(|(lint, status)| match status { + b"allow" => { + if !allow.insert(lint) || warn.contains(lint) || deny.contains(lint) + { + Err(Some(E::DuplicateLint(lint))) + } else { + Ok(()) + } + } + b"warn" => { + if !warn.insert(lint) || allow.contains(lint) || deny.contains(lint) + { + Err(Some(E::DuplicateLint(lint))) + } else { + Ok(()) + } + } + b"deny" => { + if !deny.insert(lint) || allow.contains(lint) || warn.contains(lint) + { + Err(Some(E::DuplicateLint(lint))) + } else { + Ok(()) + } + } + _ => Err(Some(E::UnexpectedLintLine(line))), + }) + } + }) + .map_or_else( + |opt| { + opt.map_or_else( + || { + if warn.remove(WARNINGS.as_bytes()) { + if allow.is_empty() { + Err(E::NoAllowLints) + } else if warn.is_empty() { + Err(E::NoWarnLints) + } else if deny.is_empty() { + Err(E::NoDenyLints) + } else { + Ok(Self { allow, warn, deny }) + } + } else { + Err(E::MissingWarningLint) + } + }, + Err, + ) + }, + |()| Err(E::Middle), + ) + } +} +/// [`Iterator`] of values separated by commas and spaces. +/// +/// In the event a value comes after a comma, a single leading space is assumed to exist and will be removed. +struct Csv<'a>(&'a [u8]); +impl<'a> Iterator for Csv<'a> { + type Item = Result<&'a [u8], ()>; + #[expect( + clippy::arithmetic_side_effects, + reason = "comments justify correctness" + )] + fn next(&mut self) -> Option<Self::Item> { + /// `b", "`. + const COMMA_SPACE: &[u8; 2] = b", "; + (!self.0.is_empty()).then(|| { + match self.0.iter().try_fold(0, |idx, b| { + if *b == b',' { + Err(idx) + } else { + // `idx < self.0.len()`, so overflow is not possible. + Ok(idx + 1) + } + }) { + Ok(_) => { + let val = self.0; + self.0 = &[]; + Ok(val) + } + Err(idx) => { + // `idx <= self.0.len()`, so this won't `panic`. + let (val, rem) = self.0.split_at(idx); + rem.split_at_checked(COMMA_SPACE.len()) + .ok_or(()) + .and_then(|(fst, fst_rem)| { + if fst == COMMA_SPACE { + self.0 = fst_rem; + Ok(val) + } else { + Err(()) + } + }) + } + } + }) + } +} +/// Group of lints. +pub(crate) struct LintGroup<'a> { + /// Name of the group. + pub name: &'a [u8], + /// Lints that make up the group. + pub lints: HashSet<&'a [u8]>, +} +impl Eq for LintGroup<'_> {} +impl PartialEq for LintGroup<'_> { + fn eq(&self, other: &Self) -> bool { + self.name == other.name + } +} +impl Hash for LintGroup<'_> { + fn hash<H: Hasher>(&self, state: &mut H) { + self.name.hash(state); + } +} +impl PartialOrd for LintGroup<'_> { + fn partial_cmp(&self, other: &Self) -> Option<Ordering> { + Some(self.cmp(other)) + } +} +impl Ord for LintGroup<'_> { + fn cmp(&self, other: &Self) -> Ordering { + self.name.cmp(other.name) + } +} +/// Data from `rustc -Whelp`. +pub(crate) struct Data<'a> { + /// `allow`-by-default lints. + pub allow: Vec<&'a [u8]>, + /// `warn`-by-default lints. + pub warn: Vec<&'a [u8]>, + /// `deny`-by-default lints. + pub deny: Vec<&'a [u8]>, + /// Lint groups. + pub groups: Vec<LintGroup<'a>>, +} +impl<'a> Data<'a> { + /// Moves until the lints. + /// + /// Returns `true` iff the header was found. + fn move_to_lints(lines: &mut Lines<'_>) -> bool { + lines + .try_fold((), |(), mut line| { + skip_leading_space(&mut line); + if line == b"name default meaning" { + Err(()) + } else { + Ok(()) + } + }) + .map_or_else( + |()| { + lines.next().is_some_and(|mut line| { + skip_leading_space(&mut line); + line == b"---- ------- -------" + }) + }, + |()| false, + ) + } + /// Moves until the lint groups. + /// + /// Returns `true` iff the header was found. + fn move_to_lint_groups(lines: &mut Lines<'_>) -> bool { + lines + .try_fold((), |(), mut line| { + skip_leading_space(&mut line); + if line == b"name sub-lints" { + Err(()) + } else { + Ok(()) + } + }) + .map_or_else( + |()| { + lines.next().is_some_and(|mut line| { + skip_leading_space(&mut line); + line == b"---- ---------" + }) + }, + |()| false, + ) + } + /// Gets the lint groups from `lines` erring when there are duplicate lint group names or if a lint group + /// name is the name of a lint (with the exception of `"warnings"`), or if a group contains duplicate lints. + /// In the event `allow_undefined_lints` is `false`, every lint in a lint group must exist in `single_lints`. + fn get_lint_groups( + output: &mut Lines<'a>, + single_lints: &Lints<'_>, + allow_undefined_lints: bool, + ) -> Result<HashSet<LintGroup<'a>>, E<'a>> { + let mut groups = HashSet::with_capacity(16); + output + .try_fold((), |(), line| { + if line.is_empty() { + Err(None) + } else { + get_lint_name(line) + .ok_or(Some(E::UnexpectedLintGroupLine(line))) + .and_then(|(name, group_lints)| { + if name == WARNINGS.as_bytes() { + Ok(()) + } else if single_lints.allow.contains(name) + || single_lints.warn.contains(name) + || single_lints.deny.contains(name) + { + Err(Some(E::LintSameNameAsLintGroup(name))) + } else { + let mut lints = HashSet::with_capacity(32); + Csv(group_lints) + .try_fold((), |(), res| { + res.map_err(|()| Some(E::UnexpectedLintGroupLine(line))) + .and_then(|lint| { + if allow_undefined_lints + || single_lints.allow.contains(lint) + || single_lints.warn.contains(lint) + || single_lints.deny.contains(lint) + { + if lints.insert(lint) { + Ok(()) + } else { + Err(Some( + E::LintGroupContainsDuplicateLint( + name, lint, + ), + )) + } + } else { + Err(Some(E::LintGroupContainsUnknownLint( + name, lint, + ))) + } + }) + }) + .and_then(|()| { + if lints.is_empty() { + Err(Some(E::EmptyLintGroup(name))) + } else if groups.insert(LintGroup { name, lints }) { + Ok(()) + } else { + Err(Some(E::DuplicateLintGroup(name))) + } + }) + } + }) + } + }) + .map_or_else( + |opt| { + opt.map_or_else( + || { + if groups.is_empty() { + Err(E::NoLintGroups) + } else { + Ok(groups) + } + }, + Err, + ) + }, + |()| Err(E::End), + ) + } + /// Parses output and returns lints and lint groups. + pub(crate) fn new(output: &'a [u8], allow_undefined_lints: bool) -> Result<Self, E<'a>> { + let mut lines = Lines(output); + if Self::move_to_lints(&mut lines) { + Lints::new(&mut lines).and_then(|lints| { + if Self::move_to_lint_groups(&mut lines) { + Self::get_lint_groups(&mut lines, &lints, allow_undefined_lints).map( + |group_set| { + let mut allow = Vec::with_capacity(lints.allow.len()); + lints.allow.into_iter().fold((), |(), lint| { + allow.push(lint); + }); + allow.sort_unstable(); + let mut warn = Vec::with_capacity(lints.warn.len()); + lints.warn.into_iter().fold((), |(), lint| { + warn.push(lint); + }); + warn.sort_unstable(); + let mut deny = Vec::with_capacity(lints.deny.len()); + lints.deny.into_iter().fold((), |(), lint| { + deny.push(lint); + }); + deny.sort_unstable(); + let mut groups = Vec::with_capacity(group_set.len()); + group_set.into_iter().fold((), |(), group| { + groups.push(group); + }); + groups.sort_unstable(); + Self { + allow, + warn, + deny, + groups, + } + }, + ) + } else { + Err(E::Middle) + } + }) + } else { + Err(E::Start) + } + } +} +#[cfg(test)] +mod tests { + use super::{Data, E, io::Read as _}; + use std::fs::{self, File}; + #[expect( + clippy::assertions_on_constants, + reason = "want to pretty-print problematic file" + )] + #[expect(clippy::verbose_file_reads, reason = "want to lock file")] + #[test] + fn outputs() { + assert!( + fs::read_dir("./outputs/").is_ok_and(|mut dir| { + dir.try_fold((), |(), ent_res| { + if ent_res.is_ok_and(|ent| { + File::options() + .read(true) + .open(ent.path()) + .is_ok_and(|mut file| { + file.lock_shared().is_ok_and(|()| { + file.metadata().is_ok_and(|meta| { + let mut output = Vec::with_capacity( + meta.len().try_into().unwrap_or(usize::MAX), + ); + file.read_to_end(&mut output).is_ok_and(|_| { + // Release lock. + drop(file); + let file_name = ent.file_name(); + let file_name_bytes = file_name.as_encoded_bytes(); + Data::new(&output, false).map_or_else( + |e| match file_name_bytes { + b"1.34.0.txt" | b"1.34.1.txt" | b"1.34.2.txt" => { + assert_eq!( + e, + E::LintGroupContainsUnknownLint( + b"future-incompatible", + b"duplicate-matcher-binding-name" + ), + "1.34.0.txt, 1.34.1.txt, and 1.34.2.txt can't be parsed for a reason other than the expected reason" + ); + Data::new(&output, true).is_ok() + } + b"1.48.0.txt" => { + assert_eq!( + e, + E::LintGroupContainsUnknownLint( + b"rustdoc", + b"private-intra-doc-links" + ), + "1.48.0.txt can't be parsed for a reason other than the expected reason" + ); + Data::new(&output, true).is_ok() + } + _ => { + assert!( + false, + "{} cannot be parsed due to {e:?}.", + String::from_utf8_lossy(file_name_bytes), + ); + false + } + }, + |_| { + if matches!(file_name_bytes, b"1.34.0.txt" | b"1.34.1.txt" | b"1.34.2.txt" | b"1.48.0.txt") { + assert!(false, "{} shouldn't be parsable", String::from_utf8_lossy(file_name_bytes)); + false + } else { + true + } + }, + ) + }) + }) + }) + }) + }) { + Ok(()) + } else { + Err(()) + } + }) + .is_ok() + }) + ); + } +}