Clippy lints / Correctness
Clippy lint · Correctness · checked with Clippy 0.1.99
clippy::size_of_in_element_count: Detects expressions where size_of::<T> or size_of_val::<T> is used as a count of elements of type T
What it meansDetects expressions where size_of::<T> or size_of_val::<T> is used as a count of elements of type T It is in the correctness group and denied by default (the build fails).
Does it matter?
These functions expect a count of T and not a number of bytes
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. Change the code by hand:
Flagged
const SIZE: usize = 128;
let x = [2u8; SIZE];
let mut y = [2u8; SIZE];
unsafe { copy_nonoverlapping(x.as_ptr(), y.as_mut_ptr(), size_of::<u8>() * SIZE) };
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::size_of_in_element_count)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
size_of_in_element_count = "allow"One run
cargo clippy -- -A clippy::size-of-in-element-countThe [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
Detects expressions where
size_of::<T> or size_of_val::<T> is used as a
count of elements of type T
Why is this bad?
These functions expect a count
of T and not a number of bytes
Example
const SIZE: usize = 128;
let x = [2u8; SIZE];
let mut y = [2u8; SIZE];
unsafe { copy_nonoverlapping(x.as_ptr(), y.as_mut_ptr(), size_of::<u8>() * SIZE) };
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- reversed_empty_rangesthis range is empty so it will yield no values
- self_assignmentself-assignment of `a.x` to `a.x`
- serde_api_misuseChecks for misuses of the serde API
- suspicious_splitnChecks for calls to [splitn] (https://doc.rust-lang.org/std/primitive.str.html#method.splitn) and related functions with either zero or one splits
- transmute_null_to_fntransmuting a known null pointer into a function pointer
- transmuting_nulltransmuting a known null pointer into a reference
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::reversed_empty_rangesthis range is empty so it will yield no valuesRead it next →Did this answer your question?