Skip to main content

Module duration

Module duration 

Source
Expand description

Duration from "30s", "1h30m", "500ms", or a bare number of seconds.

Units: ms, s, m, h, d. Several may be concatenated, largest first by convention but in any order in practice — "1h30m" is 90 minutes.

use std::time::Duration;
use serde::Deserialize;

#[derive(Deserialize)]
struct Config {
    #[serde(with = "dynamic_config::duration")]
    timeout: Duration,
    #[serde(default, with = "dynamic_config::duration::option")]
    grace: Option<Duration>,
}

Strict about nonsense: an unknown unit or a bare - is an error naming what was expected, never a silent zero.

Modules§

option
The same, for Option<Duration>.

Functions§

deserialize
#[serde(with = "dynamic_config::duration")]
parse
Parses a duration string.
serialize
Round-trips as the millisecond count, so a written config stays valid.