2个版本
使用旧Rust 2015
0.1.1 | 2018年9月21日 |
---|---|
0.1.0 | 2018年9月20日 |
#1085 in 编码
2,166 monthly downloads
在 3 个crate中使用
11KB
242 行
serde-humanize-rs
使用crate humanize-rs 实现时长和字节数的Serde反序列化器。
用法
- 将此库作为依赖项添加
[dependencies]
serde-humanize-rs = "0.1"
- 添加crate引用
extern crate serde_humanize_rs;
示例
extern crate serde;
#[macro_use] extern crate serde_derive;
extern crate serde_json;
extern crate serde_humanize_rs;
use std::time::Duration;
#[derive(Deserialize)]
struct Config {
#[serde(with = "serde_humanize_rs")]
size: usize,
#[serde(with = "serde_humanize_rs")]
interval: Duration,
}
let json = r#"{"size": "1 M", "interval": "1h30m", "close_at": "2105-03-01T10:23:57.000013579+08:00"}"#;
let cfg = serde_json::from_str::<Config>(json).unwrap();
assert_eq!(cfg.size, 1_000_000);
assert_eq!(cfg.interval, Duration::from_secs(5400));
assert_eq!(
cfg.close_at.duration_since(SystemTime::UNIX_EPOCH).unwrap(),
Duration::new(4265317437, 000013579)
);
lib.rs
:
使用crate humanize-rs
实现时长和字节数的Serde反序列化器。
示例
extern crate serde;
#[macro_use] extern crate serde_derive;
extern crate serde_json;
extern crate serde_humanize_rs;
use std::time::{Duration, SystemTime};
#[derive(Deserialize)]
struct Config {
#[serde(with = "serde_humanize_rs")]
size: usize,
#[serde(with = "serde_humanize_rs")]
interval: Duration,
#[serde(with = "serde_humanize_rs")]
close_at: SystemTime,
}
let json = r#"{"size": "1 M", "interval": "1h30m", "close_at": "2105-03-01T10:23:57.000013579+08:00"}"#;
let cfg = serde_json::from_str::<Config>(json).unwrap();
assert_eq!(cfg.size, 1_000_000);
assert_eq!(cfg.interval, Duration::from_secs(5400));
assert_eq!(
cfg.close_at.duration_since(SystemTime::UNIX_EPOCH).unwrap(),
Duration::new(4265317437, 000013579)
);
依赖项
~155–395KB