-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlint.txt
130 lines (121 loc) · 14.6 KB
/
lint.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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.