Clippy lints / Correctness
Clippy lint · Correctness · checked with Clippy 0.1.99
clippy::useless_attribute: Checks for extern crate and use items annotated with lint attributes. This lint permits lint attributes for lints emitted on the items themself. For use items these lints are: ambiguous_glob_reexports dead_code deprecated hidden_glob_reexports unreachable_pub unused unused_braces unused_import_braces clippy::disallowed_types clippy::enum_glob_use clippy::macro_use_imports clippy::module_name_repetitions clippy::redundant_pub_crate clippy::single_component_path_imports clippy::unsafe_removed_from_name clippy::wildcard_imports For extern crate items these lints are: unused_imports on items with #[macro_use]
What it meansChecks for extern crate and use items annotated with lint attributes. This lint permits lint attributes for lints emitted on the items themself. For use items these lints are: ambiguous_glob_reexports dead_code deprecated hidden_glob_reexports unreachable_pub unused unused_braces unused_import_braces clippy::disallowed_types clippy::enum_glob_use clippy::macro_use_imports clippy::module_name_repetitions clippy::redundant_pub_crate clippy::single_component_path_imports clippy::unsafe_removed_from_name clippy::wildcard_imports For extern crate items these lints are: unused_imports on items with #[macro_use] It is in the correctness group and denied by default (the build fails).
Does it matter?
Lint attributes have no effect on crate imports. Most likely a ! was forgotten.
Code that is almost certainly wrong. Denied by default: the build fails until you fix it or allow it.
How to fix it
Clippy does not fix this one automatically (its suggestion may change behaviour, so it only shows it). Change the code by hand:
Flagged
#[deny(dead_code)]
extern crate foo;
#[forbid(dead_code)]
use foo::bar;
Write this instead
#[allow(unused_imports)]
use foo::baz;
#[allow(unused_imports)]
#[macro_use]
extern crate baz;
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::useless_attribute)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
useless_attribute = "allow"One run
cargo clippy -- -A clippy::useless-attributeThe [lints] table needs Rust 1.74 or newer. In a workspace, put it under [workspace.lints.clippy] and add [lints] workspace = true to each member.
Clippy's own documentation
What it does
Checks for extern crate and use items annotated with
lint attributes.
This lint permits lint attributes for lints emitted on the items themself.
For use items these lints are:
- ambiguous_glob_reexports
- dead_code
- deprecated
- hidden_glob_reexports
- unreachable_pub
- unused
- unused_braces
- unused_import_braces
- clippy::disallowed_types
- clippy::enum_glob_use
- clippy::macro_use_imports
- clippy::module_name_repetitions
- clippy::redundant_pub_crate
- clippy::single_component_path_imports
- clippy::unsafe_removed_from_name
- clippy::wildcard_imports
For extern crate items these lints are:
unused_importson items with#[macro_use]
Why is this bad?
Lint attributes have no effect on crate imports. Most
likely a ! was forgotten.
Example
#[deny(dead_code)]
extern crate foo;
#[forbid(dead_code)]
use foo::bar;
Use instead:
#[allow(unused_imports)]
use foo::baz;
#[allow(unused_imports)]
#[macro_use]
extern crate baz;
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- unit_return_expecting_ordthis closure returns the unit type which also implements Ord
- unsound_collection_transmutetransmute from `std::vec::Vec<u16>` to `std::vec::Vec<u32>` with mismatched layout is unsound
- unused_io_amountwritten amount is not handled
- vec_resize_to_zeroFinds occurrences of Vec::resize(0, an_int)
- while_immutable_conditionvariables in the condition are not mutated in the loop body
- wrong_transmuteChecks for transmutes that can’t ever be correct on any architecture
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::unit_return_expecting_ordthis closure returns the unit type which also implements OrdRead it next →Did this answer your question?