2 releases

Uses old Rust 2015

0.1.1 Sep 21, 2018
0.1.0 Sep 20, 2018

#2233 in Parser implementations

Download history 281/week @ 2023-06-12 419/week @ 2023-06-19 419/week @ 2023-06-26 424/week @ 2023-07-03 433/week @ 2023-07-10 562/week @ 2023-07-17 440/week @ 2023-07-24 579/week @ 2023-07-31 404/week @ 2023-08-07 483/week @ 2023-08-14 557/week @ 2023-08-21 290/week @ 2023-08-28 334/week @ 2023-09-04 332/week @ 2023-09-11 387/week @ 2023-09-18 275/week @ 2023-09-25

1,334 downloads per month
Used in 3 crates

Custom license

11KB
242 lines

serde-humanize-rs

A Serde deserializer for duration and byte-size using the crate humanize-rs.

Usage

  1. Add this lib as a dependency
[dependencies]
serde-humanize-rs = "0.1"
  1. Add the crate reference
extern crate serde_humanize_rs;

Example

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:

A Serde deserializer for duration and byte-size using the crate humanize-rs.

Example

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

Dependencies

~160–410KB