Clippy lints / Style
Clippy lint · Style · checked with Clippy 0.1.99
clippy::mixed_attributes_style: Checks for items that have the same kind of attributes with mixed styles (inner/outer)
What it meansChecks for items that have the same kind of attributes with mixed styles (inner/outer). It is in the style group and warns by default.
Does it matter?
Having both style of said attributes makes it more complicated to read code.
Code that works but is not idiomatic Rust. Warns by default.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
#[custom_attribute]
pub fn foo() {
#![my_crate::custom_attribute]
}
Write this instead
#[cfg(linux)]
pub fn foo() {
#![cfg(windows)]
}
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::mixed_attributes_style)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
mixed_attributes_style = "allow"One run
cargo clippy -- -A clippy::mixed-attributes-styleThe [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 items that have the same kind of attributes with mixed styles (inner/outer).
Why is this bad?
Having both style of said attributes makes it more complicated to read code.
Known problems
This lint currently has false-negatives when mixing same attributes but they have different path symbols, for example:
#[custom_attribute]
pub fn foo() {
#![my_crate::custom_attribute]
}
Example
#[cfg(linux)]
pub fn foo() {
#![cfg(windows)]
}
Use instead:
#[cfg(linux)]
#[cfg(windows)]
pub fn foo() {
}
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- needless_returnunneeded `return` statement
- new_without_defaultChecks for public types with a pub fn new() -> Self method and no implementation of Default
- len_zeroChecks for getting the length of something via .len() just to compare to zero, and suggests using .is_empty() where applicable
- mem_replace_with_defaultreplacing a value of type `T` with `T::default()`
- missing_enforced_import_renamesChecks for imports that do not rename the item as specified in the enforced-import-renames config option. Note: Even though this lint is warn-by-default, it will only trigger if import renames are defined in the clippy.toml file
- missing_safety_docChecks for the doc comments of publicly visible unsafe functions and warns if there is no # Safety section
- mixed_case_hex_literalsinconsistent casing in hexadecimal literal
- module_inceptionChecks for modules that have the same name as their parent module
- multiple_bound_locationsbound is defined in more than one place
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::needless_returnunneeded `return` statementRead it next →Did this answer your question?