Tiny library for approximate formatting of std::time::Duration in a human-friendly way.
If you are looking for a full precision human readable format, take a look at humantime.
use std::time::Duration;
use folktime::Folktime;
let a = Folktime::duration(Duration::from_secs(5));
assert_eq!(format!("{}", a), "5.00s");
Formatting only shows the most significant digits:
use std::time::Duration;
use folktime::Folktime;
let a = Folktime::duration(Duration::new(0, 123_456_789));
let b = Folktime::duration(Duration::new(1, 123_456_789));
let c = Folktime::duration(Duration::new(12, 123_456_789));
let d = Folktime::duration(Duration::new(123, 123_456_789));
assert_eq!(format!("{}", a), "123ms");
assert_eq!(format!("{}", b), "1.12s");
assert_eq!(format!("{}", c), "12.1s");
assert_eq!(format!("{}", d), "2.05m");
There are several styles for formatting:
use std::time::Duration;
use folktime::Folktime;
use folktime::duration::Style;
let a = Folktime::duration(Duration::new(0, 12_056_999));
let b = Folktime::duration(Duration::new(0, 12_056_999)).with_style(Style::OneUnitWhole);
let c = Folktime::duration(Duration::new(0, 12_056_999)).with_style(Style::TwoUnitsWhole);
assert_eq!(format!("{}", a), "12.0ms");
assert_eq!(format!("{}", b), "12ms");
assert_eq!(format!("{}", c), "12ms 56us");
Here's a comparison of styles:
Duration | Style::OneUnitFrac |
Style::OneUnitWhole |
Style::TwoUnitsWhole |
---|---|---|---|
0s | 0.00s |
0s |
0s 0ms |
0.123456s | 123ms |
123ms |
123ms 456us |
1.123456s | 1.12s |
1s |
1s 123ms |
12.12345s | 12.1s |
12s |
12s 123ms |
123.1234s | 2.05m |
2m |
2m 3s |
86400s | 1.00d |
1d |
1d 0h |
12345678s | 2.04w |
2w |
2w 0d |
123456789s | 4.69mo |
4mo |
4mo 21d |
max | 584Gy |
584Gy |
584Gy 4mo |