compact-reltime 0.1.0

Compact relative time formatting
Documentation
use std::ops::Range;
use compact_reltime::{Reltime, Units};
use rand::distr::{Distribution, Uniform};
use rand::random;

const DISTRS: [Range<u64>; 7] = [
    0..90,
    90..(90 * Units::Minutes as u64),
    (90 * Units::Minutes as u64)..(72 * Units::Hours as u64),
    (72 * Units::Hours as u64)..(10 * Units::Days as u64),
    (10 * Units::Days as u64)..(8 * Units::Weeks as u64),
    (8 * Units::Weeks as u64)..(18 * Units::Months as u64),
    (18 * Units::Months as u64)..(10 * Units::Years as u64),
];

fn main() {
    let mut rng = rand::rng();
    for _ in 0..100 {
        let idx: usize = (random::<u64>() % 7) as usize;
        let distr = Uniform::try_from(DISTRS[idx].clone()).unwrap();
        let seconds = distr.sample(&mut rng);
        let duration = Reltime::new(seconds).expect("too long");
        println!("{:10} {}", duration.seconds(), duration);
    }
}