Clippy lints / Style
Clippy lint · Style · checked with Clippy 0.1.99
clippy::nonstandard_macro_braces: use of irregular braces for `vec!` macro
What it meansChecks that common macros are used with consistent bracing. It is in the style group and warns by default.
What you see
warning: use of irregular braces for `vec!` macro --> main.rs:3:1 | 3 | vec!{1, 2, 3}; | ^^^^^^^^^^^^^ help: consider writing: `vec![1, 2, 3]` | = help: for further information visit https://rust-lang.github.io/rust-clippy/stable/index.html#nonstandard_macro_braces = note: `#[warn(clippy::nonstandard_macro_braces)]` on by default
Real output of Clippy 0.1.99 (Rust 1.99) on the example below. Names and line numbers in yours will differ.
Does it matter?
Having non-conventional braces on well-stablished macros can be confusing when debugging, and they bring incosistencies with the rest of the ecosystem.
Code that works but is not idiomatic Rust. Warns by default.
How to fix it
Clippy can fix this one for you: run cargo clippy --fix (add --allow-dirty if you have uncommitted changes). Review the diff before you commit.
Flagged
vec!{1, 2, 3};
Write this instead
vec![1, 2, 3];
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::nonstandard_macro_braces)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
nonstandard_macro_braces = "allow"One run
cargo clippy -- -A clippy::nonstandard-macro-bracesThe [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 that common macros are used with consistent bracing.
Why is this bad?
Having non-conventional braces on well-stablished macros can be confusing when debugging, and they bring incosistencies with the rest of the ecosystem.
Example
vec!{1, 2, 3};
Use instead:
vec![1, 2, 3];
Configuration
standard-macro-braces: Enforce the named macros always use the braces specified.
A MacroMatcher can be added like so { name = "macro_name", brace = "(" }. If the macro
could be used with a full path two MacroMatchers have to be added one with the full path
crate_name::macro_name and one with just the macro name.
(default: [])
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
- new_ret_no_selfChecks for new not returning a type that contains Self
- non_minimal_cfgunneeded sub `cfg` when there is only one condition
- obfuscated_if_elsethis method chain can be written more clearly with `if .. else ..`
- ok_expectChecks for usage of ok().expect(..). Note: This lint only triggers for code marked compatible with versions of the compiler older than Rust 1.82.0
- op_refChecks for arguments to == which have their address taken to satisfy a bound and suggests to dereference the other argument instead
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?