1 use std::error::Error; 2 use std::io; 3 use std::process; 4 run() -> Result<(), Box<dyn Error>>5fn run() -> Result<(), Box<dyn Error>> { 6 let mut rdr = csv::Reader::from_reader(io::stdin()); 7 { 8 // We nest this call in its own scope because of lifetimes. 9 let headers = rdr.headers()?; 10 println!("{:?}", headers); 11 } 12 for result in rdr.records() { 13 let record = result?; 14 println!("{:?}", record); 15 } 16 // We can ask for the headers at any time. There's no need to nest this 17 // call in its own scope because we never try to borrow the reader again. 18 let headers = rdr.headers()?; 19 println!("{:?}", headers); 20 Ok(()) 21 } 22 main()23fn main() { 24 if let Err(err) = run() { 25 println!("{}", err); 26 process::exit(1); 27 } 28 } 29