What's the best way to read from a type implementing the std::io::Read
trait when the contents of the output isn't important?
Possible options I see are:
The first 2 options don't seem ideal, the third is OK but inconvenient.
Does Rust provide a convenient way to achieve this?
You can use io::copy()
, Read::take()
and io::sink()
to discard a specific number of bytes:
let mut file = File::open("foo.txt").unwrap();
// Discard 27 bytes
io::copy(&mut file.by_ref().take(27), &mut io::sink());
// Read the rest
let mut interesting_contents = Vec::new();
file.read_to_end(&mut interesting_contents).unwrap();
(Playground)
Here, we also have to use by_ref()
in order to be able to still use the file afterwards.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With