zuck

Crates.iozuck
lib.rszuck
version2.0.0
sourcesrc
created_at2024-11-16 14:03:15.106576
updated_at2024-11-18 18:52:53.044401
descriptionHuman-readable time parser and formatter
homepagehttps://github.com/LennyLizowzskiy/zuck
repositoryhttps://github.com/LennyLizowzskiy/zuck
max_upload_size
id1450397
size52,813
l.liz (LennyLizowzskiy)

documentation

https://docs.rs/zuck

README

zuck

MSRV License Crate

Convert human-readable time to std::time::Duration and vice versa. No dependencies needed (except std).

Stability

This library adheres to Semantic Versioning.

Usage

Parse the &str using [0-9][alias] format. Whitespaces between the value are allowed between elements. Repeating time units is not.

Aliases

  • Nanoseconds: ns, nsec, nsecs, nanosec, nanosecs, nanosecond, nanoseconds
  • Microseconds: μs, us, usec, usecs, microsec, microsecs, microsecond, microseconds
  • Milliseconds: ms, msec, msecs, millisecond, milliseconds
  • Seconds: s, sec, secs, second, seconds
  • Minutes: m, min, mins, minute, minutes
  • Hours: h, hr, hrs, hour, hours
  • Days: d, day, days
  • Weeks: w, wk, wks, week, weeks
  • Months: mo, month, months
  • Years: y, yr, yrs, year, years

Example

let duration = zuck::Duration::from_str("1yr2mo3w4d5h6m7s8ms9microsec10ns").unwrap();

assert_eq!(
    duration,
    Duration {
        nanoseconds: 10,
        microseconds: 9,
        milliseconds: 8,
        seconds: 7,
        minutes: 6,
        hours: 5,
        days: 25,
        months: 2,
        years: 1
    }
);

Miscellaneous

RegExp to use for string validation in other tools (ex: JSONSchema)

\b(\d{1,32} ?((ns)|(nsecs?)|(nanosecs?)|(nanosecs?)|(nanoseconds?)|(μs)|(us)|(usecs?)|(microsecs?)|(microseconds?)|(ms)|(msecs?)|(milliseconds?)|(s)|(secs?)|(second)|(seconds?)|(m)|(mins?)|(minutes?)|(h)|(hrs?)|(hours?)|(d)|(days?)|(w)|(wks?)|(weeks?)|(mo)|(months?)|(y)|(yrs?)|(years?)))( ?(\d{1,32} ?((ns)|(nsecs?)|(nanosecs?)|(nanosecs?)|(nanoseconds?)|(μs)|(us)|(usecs?)|(microsecs?)|(microseconds?)|(ms)|(msecs?)|(milliseconds?)|(s)|(secs?)|(second)|(seconds?)|(m)|(mins?)|(minutes?)|(h)|(hrs?)|(hours?)|(d)|(days?)|(w)|(wks?)|(weeks?)|(mo)|(months?)|(y)|(yrs?)|(years?))))*\b

With case-insensitive flag enabled.

Though it doesn't cover the failure in case if repeating of the same time unit occurs.

License

This library is primarily distributed under the terms of either the MIT license or the Apache License (Version 2.0) at your option.

See LICENSE-APACHE and LICENSE-MIT for details.

Commit count: 5

cargo fmt