#add-on #serde #serialization #deserialize #vec #geo #csv-related

serde-csv-extra

与 CSV 相关的 serde 扩展

2 个不稳定版本

0.2.0 2021 年 12 月 30 日
0.1.0 2021 年 12 月 29 日

#1164 in 编码

每月 21 次下载

MIT 许可证

14KB
235

License Crates.io Docs.rs

serde-csv-extra

与 CSV 相关的 serde 扩展

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
struct Foo {
   #[serde(with = "serde_csv_extra::vec_num")]
   list: Vec<i32>,
   #[serde(with = "serde_csv_extra::vec_vec_num")]
   matrix: Vec<Vec<i32>>,
   #[serde(with = "serde_csv_extra::maybe_image_size")]
   image_size: Option<(u8, u16)>,
   #[serde(with = "serde_csv_extra::maybe_lat_lon")]
   geo: Option<(f32, f32)>,
}

let mut wtr = csv::WriterBuilder::new().has_headers(false).from_writer(Vec::new());
wtr.serialize(
    Foo {
        list: vec![-1, 1],
        matrix: vec![vec![-1, 1], vec![1, -1]],
        image_size: Some((16, 1024)),
        geo: Some((84.99, -135.00)),
    }
).unwrap();
wtr.serialize(
    Foo {
        list: vec![],
        matrix: vec![],
        image_size: None,
        geo: None,
    }
).unwrap();
let s = String::from_utf8(wtr.into_inner().unwrap()).unwrap();
assert_eq!(s, "-1_1,-1_1|1_-1,16x1024,84.99;-135\n,,,\n");

贡献

我们感谢所有形式的贡献,谢谢!

关于 README 的说明

README.md 文件不应该直接更改。它由 cargo-readme 命令从 crate 的文档生成。

  • 如果没有安装,请执行以下命令: cargo install cargo-readme
  • src/lib.rs 中更改 crate 级别文档,或在 README.tpl 中包裹文本。
  • 应用更改: cargo readme > README.md

如果您已安装 rusty-hook,则更改将在提交时自动应用。

许可证

本项目受 MIT 许可证 的许可。

依赖项

~0.4–1MB
~23K SLoC