home ~ projects ~ socials

Read A CSV Into A Generic Vec Of Vecs In Rust

---
[dependencies]
csv = "1.3.0"
serde = "1.0.214"
---

#![allow(unused)]
use csv::ReaderBuilder;
use serde;

fn main() {
  let source = "a,b,c\nd,e,f\ng,h,i";
  let data = parse_csv(source);
  dbg!(data);
}

fn parse_csv(source: &str) -> Vec<Vec<String>> {
  let mut items: Vec<Vec<String>> = vec![];
  let mut rdr = ReaderBuilder::new()
      .has_headers(false)
      .delimiter(b',')
      .from_reader(source.as_bytes());
  for result in rdr.deserialize() {
    match result {
      Ok(record) => items.push(record),
      Err(_) => ()
    }
  }
  items
}
Output:
[/Users/alan/.cargo/target/55/19854259915251/_active_nvim_run:16:3] data = [
    [
        "a",
        "b",
        "c",
    ],
    [
        "d",
        "e",
        "f",
    ],
    [
        "g",
        "h",
        "i",
    ],
]
-- end of line --