Clippy lints / Performance
Clippy lint · Performance · checked with Clippy 0.1.99
clippy::boxed_local: local variable doesn't need to be boxed here
What it meansChecks for usage of Box<T> where an unboxed T would work fine. It is in the performance group and warns by default.
What you see
warning: local variable doesn't need to be boxed here --> main.rs:3:8 | 3 | fn foo(x: Box<u32>) {} | ^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/stable/index.html#boxed_local = note: `#[warn(clippy::boxed_local)]` 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?
This is an unnecessary allocation, and bad for performance. It is only necessary to allocate if you wish to move the box into something.
Code that could be written to run faster. Warns by default.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
fn foo(x: Box<u32>) {}
Write this instead
fn foo(x: u32) {}
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::boxed_local)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
boxed_local = "allow"One run
cargo clippy -- -A clippy::boxed-localThe [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.
Settings in clippy.toml
too-large-for-stack: The maximum size of objects (in bytes) that will be linted. Larger objects are ok on the heap
Clippy's own documentation
What it does
Checks for usage of Box<T> where an unboxed T would
work fine.
Why is this bad?
This is an unnecessary allocation, and bad for performance. It is only necessary to allocate if you wish to move the box into something.
Example
fn foo(x: Box<u32>) {}
Use instead:
fn foo(x: u32) {}
Configuration
-
too-large-for-stack: The maximum size of objects (in bytes) that will be linted. Larger objects are ok on the heap(default:
200)
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- large_enum_variantlarge size difference between variants
- box_collectionChecks for usage of Box<T> where T is a collection such as Vec anywhere in the code. Check the Box documentation for more information
- cloned_ref_to_slice_refsChecks for slice references with cloned references such as &[f.clone()]
- cmp_ownedChecks for conversions to owned values just for the sake of a comparison
- collapsible_str_replaceChecks for consecutive calls to str::replace (2 or more) that can be collapsed into a single call
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::large_enum_variantlarge size difference between variantsRead it next →Did this answer your question?