RS.CLIPPY.READ_ZERO_BYTE_VEC
Checks for reads into a zero-length `Vec`
This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: read_zero_byte_vec. Copyright ©2025 The Rust Team. All rights reserved.
What it does
This lint catches reads into a zero-length Vec.
Especially in the case of a call to with_capacity, this lint warns that read
gets the number of bytes from the Vec's length, not its capacity.
Why is this bad?
Reading zero bytes is almost certainly not the intended behavior.
Known problems
In theory, a very unusual read implementation could assign some semantic meaning
to zero-byte reads. But it seems exceptionally unlikely that code intending to do
a zero-byte read would allocate a Vec for it.
Example
use std::io;
fn foo<F: io::Read>(mut f: F) {
let mut data = Vec::with_capacity(100);
f.read(&mut data).unwrap();
}
Use instead:
use std::io;
fn foo<F: io::Read>(mut f: F) {
let mut data = Vec::with_capacity(100);
data.resize(100, 0);
f.read(&mut data).unwrap();
}