headerを無視して、deserialize したい場合。 (has_headers falseでskip)
headerを無視して、deserialize したい場合がある。
label,value1,value2 l1,2,4 l2,2,4
で、structは
#[derive(Debug, Deserialize, Eq, PartialEq)] struct Row { label: String, value: Vec<i32>, }
みたいなケースだ。 こういうときはskipを使ってheaderを無視する
extern crate csv; #[macro_use] extern crate serde_derive; use csv::ReaderBuilder; use std::error::Error; #[derive(Debug, Deserialize, Eq, PartialEq)] struct Row { label: String, value: Vec<i32>, } fn example() -> Result<(), Box<dyn Error>> { let data = "\ label,value1,value2 l1,2,4 l2,2,4 "; let mut rdr = ReaderBuilder::new() .has_headers(false) .from_reader(data.as_bytes()); // skip since header 1 let mut iter = rdr.deserialize().skip(1); for result in iter { let record: Row = result?; println!("{:?}", record); } Ok(()) } fn main() { example(); }