Using size_of::<T> or size_of_val::<T> as a count of elements is misleading because these functions are meant
to return the size in bytes, not the count of elements. This can lead to logical errors in the code.
const SIZE: usize = 128;
let x = [2u8; SIZE];
let mut y = [2u8; SIZE];
unsafe { std::ptr::copy_nonoverlapping(x.as_ptr(), y.as_mut_ptr(), std::mem::size_of::<u8>() * SIZE) }; // Noncompliant: uses size_of::<u8>() to determine element count.
const SIZE: usize = 128;
let x = [2u8; SIZE];
let mut y = [2u8; SIZE];
unsafe { std::ptr::copy_nonoverlapping(x.as_ptr(), y.as_mut_ptr(), SIZE) }; // Compliant: uses the actual element count.