use std::env;
use std::fs::File;
use std::io::{BufReader, BufWriter, Read, Write};
fn main() {
let args = env::args().collect::<Vec<String>>();
let file = File::open(&args[1]).expect("file not found");
let reader = BufReader::new(file);
let mut writer = BufWriter::new(std::io::stdout());
for it in reader.bytes() {
writer.write(&[*it]);
}
}
Why does this give an error?
type `std::result::Result<u8, std::io::Error>` cannot be dereferenced
reader.bytes()gives you a fallible iterator overu8, i.e. an iterator whose item isResult<u8, io::Error>. As the error message tells you, aResult<u8, Error>cannot be dereferenced. You at least needlet it = it.unwrap()or equivalent, but even then you'll get au8, which again cannot be referenced. Something likewriter.writer(&[it.unwrap()])should work just fine, though. - user4815162342