use std::{env, fs::File, io::Read}; fn main() -> Result<(), Box> { const CHUNK_SIZE: usize = 8; let filename = env::args().nth(1).unwrap_or_default(); if filename.is_empty() { eprintln!("error missing filename"); return Ok(()); } let mut file = File::open(&filename)?; let mut chunk = Vec::with_capacity(CHUNK_SIZE); let mut idx = 0; while { chunk.clear(); file.by_ref() .take(CHUNK_SIZE as u64) .read_to_end(&mut chunk)? > 0 } { // write index print!("{:010}: ", idx); // write hex for byte in &chunk { print!("{:02X} ", byte); } // write ascii println!("{}", String::from_utf8_lossy(&chunk).replace('\n', "⏎")); idx += CHUNK_SIZE; } Ok(()) }