Rustでcsv deserialize してstruct配列を取得する
deserializeはcsv::DeserializeRecordsIter
を返却するので、collectすると取得できる。
型を指定してcollectしないと
consider specifying the type argument in the method call
のエラーが出る。
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 data = rdr.deserialize().skip(1).collect::<Result<Vec<(Row)>, _>>().unwrap(); println!("{:?}", data); Ok(()) } fn main() { example(); }