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);
}