Crate fancy_duration

source ·
Expand description

Using this library is very simple:

use std::time::Duration;
use fancy_duration::FancyDuration;

pub fn main() {
    assert_eq!(FancyDuration(Duration::new(20, 0)).to_string(), "20s");
    assert_eq!(FancyDuration(Duration::new(600, 0)).to_string(), "10m");
    assert_eq!(FancyDuration(Duration::new(120, 0)).to_string(), "2m");
    assert_eq!(FancyDuration(Duration::new(185, 0)).to_string(), "3m 5s");
    assert_eq!(FancyDuration::<Duration>::parse("3m 5s").unwrap().duration(), Duration::new(185, 0));
    assert_eq!(FancyDuration(Duration::new(185, 0)).to_string(), "3m 5s");

    // also works with time::Duration from the `time` crate
    assert_eq!(FancyDuration(time::Duration::new(20, 0)).to_string(), "20s");
    assert_eq!(FancyDuration(time::Duration::new(600, 0)).to_string(), "10m");
    assert_eq!(FancyDuration(time::Duration::new(120, 0)).to_string(), "2m");
    assert_eq!(FancyDuration(time::Duration::new(185, 0)).to_string(), "3m 5s");
    assert_eq!(FancyDuration::<time::Duration>::parse("3m 5s").unwrap().duration(), time::Duration::new(185, 0));
    assert_eq!(FancyDuration(time::Duration::new(185, 0)).to_string(), "3m 5s");
}

It also has serde support.

Structs

Traits

  • To implement a fancier duration, just have your duration return the number of seconds as a part of the following method call, as well as a method to handle parsing.