pub use lint::LINT_LEVELS;
// begin lint list, do not remove this comment, it’s used in `update_lints`
-pub const ALL_LINTS: [Lint; 320] = [
+pub const ALL_LINTS: [Lint; 343] = [
Lint {
name: "absurd_extreme_comparisons",
group: "correctness",
deprecation: None,
module: "approx_const",
},
+ Lint {
+ name: "as_conversions",
+ group: "restriction",
+ desc: "using a potentially dangerous silent `as` conversion",
+ deprecation: None,
+ module: "as_conversions",
+ },
Lint {
name: "assertions_on_constants",
group: "style",
deprecation: None,
module: "dbg_macro",
},
+ Lint {
+ name: "debug_assert_with_mut_call",
+ group: "correctness",
+ desc: "mutable arguments in `debug_assert{,_ne,_eq}!`",
+ deprecation: None,
+ module: "mutable_debug_assertion",
+ },
Lint {
name: "decimal_literal_representation",
group: "restriction",
deprecation: None,
module: "double_comparison",
},
+ Lint {
+ name: "double_must_use",
+ group: "style",
+ desc: "`#[must_use]` attribute on a `#[must_use]`-returning function / method",
+ deprecation: None,
+ module: "functions",
+ },
Lint {
name: "double_neg",
group: "style",
deprecation: None,
module: "excessive_precision",
},
+ Lint {
+ name: "exit",
+ group: "restriction",
+ desc: "`std::process::exit` is called, terminating the program",
+ deprecation: None,
+ module: "exit",
+ },
Lint {
name: "expect_fun_call",
group: "perf",
deprecation: None,
module: "bit_mask",
},
+ Lint {
+ name: "inefficient_to_string",
+ group: "perf",
+ desc: "using `to_string` on `&&T` where `T: ToString`",
+ deprecation: None,
+ module: "methods",
+ },
Lint {
name: "infallible_destructuring_match",
group: "style",
deprecation: None,
module: "integer_division",
},
- Lint {
- name: "into_iter_on_array",
- group: "correctness",
- desc: "using `.into_iter()` on an array",
- deprecation: None,
- module: "methods",
- },
Lint {
name: "into_iter_on_ref",
group: "style",
Lint {
name: "iterator_step_by_zero",
group: "correctness",
- desc: "using `Iterator::step_by(0)`, which produces an infinite iterator",
+ desc: "using `Iterator::step_by(0)`, which will panic at runtime",
deprecation: None,
- module: "ranges",
+ module: "methods",
},
Lint {
name: "just_underscores_and_digits",
deprecation: None,
module: "large_enum_variant",
},
+ Lint {
+ name: "large_stack_arrays",
+ group: "pedantic",
+ desc: "allocating large arrays on stack may cause stack overflow",
+ deprecation: None,
+ module: "large_stack_arrays",
+ },
Lint {
name: "len_without_is_empty",
group: "style",
deprecation: None,
module: "returns",
},
+ Lint {
+ name: "let_underscore_must_use",
+ group: "restriction",
+ desc: "non-binding let on a #[must_use] expression",
+ deprecation: None,
+ module: "let_underscore",
+ },
Lint {
name: "let_unit_value",
group: "style",
},
Lint {
name: "manual_mul_add",
- group: "perf",
+ group: "nursery",
desc: "Using `a.mul_add(b, c)` for floating points has higher numerical precision than `a * b + c`",
deprecation: None,
module: "mul_add",
deprecation: None,
module: "mem_replace",
},
+ Lint {
+ name: "mem_replace_with_default",
+ group: "style",
+ desc: "replacing a value of type `T` with `T::default()` instead of using `std::mem::take`",
+ deprecation: None,
+ module: "mem_replace",
+ },
Lint {
name: "mem_replace_with_uninit",
group: "correctness",
deprecation: None,
module: "missing_doc",
},
+ Lint {
+ name: "missing_errors_doc",
+ group: "pedantic",
+ desc: "`pub fn` returns `Result` without `# Errors` in doc comment",
+ deprecation: None,
+ module: "doc",
+ },
Lint {
name: "missing_inline_in_public_items",
group: "restriction",
deprecation: None,
module: "enum_variants",
},
+ Lint {
+ name: "modulo_arithmetic",
+ group: "restriction",
+ desc: "any modulo arithmetic statement",
+ deprecation: None,
+ module: "modulo_arithmetic",
+ },
Lint {
name: "modulo_one",
group: "correctness",
deprecation: None,
module: "inherent_impl",
},
+ Lint {
+ name: "must_use_candidate",
+ group: "pedantic",
+ desc: "function or method that could take a `#[must_use]` attribute",
+ deprecation: None,
+ module: "functions",
+ },
+ Lint {
+ name: "must_use_unit",
+ group: "style",
+ desc: "`#[must_use]` attribute on a unit-returning function / method",
+ deprecation: None,
+ module: "functions",
+ },
Lint {
name: "mut_from_ref",
group: "correctness",
deprecation: None,
module: "loops",
},
+ Lint {
+ name: "mutable_key_type",
+ group: "correctness",
+ desc: "Check for mutable Map/Set key type",
+ deprecation: None,
+ module: "mut_key",
+ },
Lint {
name: "mutex_atomic",
group: "perf",
deprecation: None,
module: "methods",
},
+ Lint {
+ name: "option_expect_used",
+ group: "restriction",
+ desc: "using `Option.expect()`, which might be better handled",
+ deprecation: None,
+ module: "methods",
+ },
Lint {
name: "option_map_or_none",
group: "style",
deprecation: None,
module: "overflow_check_conditional",
},
+ Lint {
+ name: "panic",
+ group: "restriction",
+ desc: "usage of the `panic!` macro",
+ deprecation: None,
+ module: "panic_unimplemented",
+ },
Lint {
name: "panic_params",
group: "style",
deprecation: None,
module: "replace_consts",
},
+ Lint {
+ name: "result_expect_used",
+ group: "restriction",
+ desc: "using `Result.expect()`, which might be better handled",
+ deprecation: None,
+ module: "methods",
+ },
Lint {
name: "result_map_unit_fn",
group: "complexity",
Lint {
name: "result_map_unwrap_or_else",
group: "pedantic",
- desc: "using `Result.map(f).unwrap_or_else(g)`, which is more succinctly expressed as `.ok().map_or_else(g, f)`",
+ desc: "using `Result.map(f).unwrap_or_else(g)`, which is more succinctly expressed as `.map_or_else(g, f)`",
deprecation: None,
module: "methods",
},
deprecation: None,
module: "loops",
},
+ Lint {
+ name: "same_functions_in_if_condition",
+ group: "pedantic",
+ desc: "consecutive `ifs` with the same function call",
+ deprecation: None,
+ module: "copies",
+ },
Lint {
name: "search_is_some",
group: "complexity",
deprecation: None,
module: "suspicious_trait_impl",
},
+ Lint {
+ name: "suspicious_unary_op_formatting",
+ group: "style",
+ desc: "suspicious formatting of unary `-` or `!` on the RHS of a BinOp",
+ deprecation: None,
+ module: "formatting",
+ },
+ Lint {
+ name: "tabs_in_doc_comments",
+ group: "style",
+ desc: "using tabs in doc comments is not recommended",
+ deprecation: None,
+ module: "tabs_in_doc_comments",
+ },
Lint {
name: "temporary_assignment",
group: "complexity",
deprecation: None,
module: "methods",
},
+ Lint {
+ name: "to_digit_is_some",
+ group: "style",
+ desc: "`char.is_digit()` is clearer",
+ deprecation: None,
+ module: "to_digit_is_some",
+ },
+ Lint {
+ name: "todo",
+ group: "restriction",
+ desc: "`todo!` should not be present in production code",
+ deprecation: None,
+ module: "panic_unimplemented",
+ },
Lint {
name: "too_many_arguments",
group: "complexity",
deprecation: None,
module: "transmute",
},
+ Lint {
+ name: "transmute_float_to_int",
+ group: "nursery",
+ desc: "transmutes from a float to an integer",
+ deprecation: None,
+ module: "transmute",
+ },
Lint {
name: "transmute_int_to_bool",
group: "complexity",
deprecation: None,
module: "misc_early",
},
+ Lint {
+ name: "unreachable",
+ group: "restriction",
+ desc: "`unreachable!` should not be present in production code",
+ deprecation: None,
+ module: "panic_unimplemented",
+ },
Lint {
name: "unreadable_literal",
group: "style",
module: "unused_io_amount",
},
Lint {
- name: "unused_label",
- group: "complexity",
- desc: "unused labels",
+ name: "unused_self",
+ group: "pedantic",
+ desc: "methods that contain a `self` argument but don\'t use it",
deprecation: None,
- module: "unused_label",
+ module: "unused_self",
},
Lint {
name: "unused_unit",
},
Lint {
name: "use_self",
- group: "pedantic",
+ group: "nursery",
desc: "Unnecessary structure name repetition whereas `Self` is applicable",
deprecation: None,
module: "use_self",
deprecation: None,
module: "unicode",
},
+ Lint {
+ name: "zst_offset",
+ group: "correctness",
+ desc: "Check for offset calculations on raw pointers to zero-sized types",
+ deprecation: None,
+ module: "methods",
+ },
];
// end lint list, do not remove this comment, it’s used in `update_lints`