#csv #serde #delimited #comma #field-name

csv-stream

用于构建作为流或迭代器的CSV文件。

4个版本

0.1.3 2021年11月26日
0.1.2 2021年11月26日
0.1.1 2021年11月26日
0.1.0 2021年11月26日

#2004编码

每月 36 次下载

Unlicense/MIT

89KB
1.5K SLoC

csv-stream

用于构建作为流或迭代器的CSV文件。

#[derive(Serialize)]
struct Row<'a> {
    city: &'a str,
    country: &'a str,
    // Serde allows us to name our headers exactly,
    // even if they don't match our struct field names.
    #[serde(rename = "popcount")]
    population: u64,
}

let rows = vec![
    Row {
        city: "Boston",
        country: "United States",
        population: 4628910,
    },
    Row {
        city: "Concord",
        country: "United States",
        population: 42695,
    },
];

let row_stream = futures::stream::iter(ROWS);
let csv_stream = WriterBuilder::default().build_stream(row_stream);

let mut buf = vec![];
while let Some(res) = csv_stream.next().await {
    buf.extend_from_slice(&res.unwrap())
}

let buf = String::from_utf8(buf).unwrap();

assert_eq!(
    buf,
    r#"city,country,popcount
Boston,United States,4628910
Concord,United States,42695
"#
);

依赖项

~0.8–1.4MB
~24K SLoC