Clippy
A collection of lints to catch common mistakes and improve your Rust code.
There are over 700 lints included in this crate!
Lints are divided into categories, each with a default lint
level. You can choose how
much Clippy is supposed to annoy help you by changing the lint level by
category.
| Category | Description | Default level | 
|---|---|---|
| clippy::all | all lints that are on by default (correctness, suspicious, style, complexity, perf) | warn/deny | 
| clippy::correctness | code that is outright wrong or useless | deny | 
| clippy::suspicious | code that is most likely wrong or useless | warn | 
| clippy::style | code that should be written in a more idiomatic way | warn | 
| clippy::complexity | code that does something simple but in a complex way | warn | 
| clippy::perf | code that can be written to run faster | warn | 
| clippy::pedantic | lints which are rather strict or have occasional false positives | allow | 
| clippy::restriction | lints which prevent the use of language and library features1 | allow | 
| clippy::nursery | new lints that are still under development | allow | 
| clippy::cargo | lints for the cargo manifest | allow | 
More to come, please file an issue if you have ideas!
The restriction category should, emphatically, not be enabled as a whole. The contained
lints may lint against perfectly reasonable code, may not have an alternative suggestion,
and may contradict any other lints (including other categories). Lints should be considered
on a case-by-case basis before enabling.
1
                    Some use cases for restriction lints include:
- Strict coding styles (e.g. clippy::else_if_without_else).
- Additional restrictions on CI (e.g. clippy::todo).
- Preventing panicking in certain functions (e.g. clippy::unwrap_used).
- Running a lint only on a subset of code (e.g. #[forbid(clippy::float_arithmetic)]on a module).