Skip to main content

parse

Function parse 

Source
pub fn parse(input: &str) -> Result<(Vec<String>, Vec<Vec<String>>), String>
Expand description

Parse a CSV string back into a header row + data rows.

Implements the same RFC 4180 escaping rules used by generate: quoted fields support embedded ,, " (doubled), \n, and \r. Designed for round-trip with generate, not as a general-purpose CSV parser.

Returns (headers, rows). Each row has the same length as headers for well-formed input. Trailing empty lines are ignored. Returns Err with a one-line message on malformed input (e.g. unterminated quoted field).

ยงExample

use dev_fixtures::mock::csv::{generate, parse};

let csv = generate(&["id", "name"], 3, 0, |rng| {
    vec![rng.range(100).to_string(), format!("u{}", rng.range(10))]
});
let (headers, rows) = parse(&csv).unwrap();
assert_eq!(headers, vec!["id", "name"]);
assert_eq!(rows.len(), 3);
for row in &rows {
    assert_eq!(row.len(), 2);
}