// the find
BurntSushi/rust-csv
A CSV parser for Rust, with Serde support.
A battle-tested CSV reader/writer for Rust from BurntSushi, with first-class Serde integration for mapping rows directly to structs. This is the de facto standard crate for CSV work in Rust, used for everything from quick scripts to data pipelines.
The reader handles the genuinely annoying parts of CSV correctly: quoting edge cases, embedded newlines, flexible delimiters, and non-UTF8 input via ByteRecord. The docs.rs tutorial and cookbook are unusually thorough for a library this size, walking through performance tradeoffs (allocation reuse, Serde overhead) rather than just API surface. Splitting the core parsing logic into csv-core means you can use it in no_std or custom-allocation contexts without pulling in the full crate.
Async is not supported at all — you're reading/writing on blocking I/O, so anyone building on tokio needs to wrap it in spawn_blocking or reach for a different crate. The crate is in long-term maintenance mode rather than active feature development, so if you hit a real gap you're more likely to get a polite no than a fix. Serde deserialization has real performance cost compared to StringRecord/ByteRecord access, and the tutorial is upfront about this but it's still a gotcha for anyone who reaches for derive(Deserialize) by default on a hot path.