Skip to content

iksuddle/durstr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

durstr

Crates.io Version docs.rs

A simple library for parsing human-readable duration strings into std::time::Duration.

Usage

Add durstr to Cargo.toml:

[dependencies]
durstr = "0.5.0"

This library provides a parse function for quick and easy parsing, and a Parser struct for more control over parsing behavior.

The parse function is a convenience wrapper around a default Parser.

use durstr::parse;
use std::time::Duration;

let dur = parse("12 minutes, 21 seconds");
assert_eq!(dur, Ok(Duration::from_secs(741)));

let dur = parse("1hr 2min 3sec");
assert_eq!(dur, Ok(Duration::from_secs(3723)));

For more control, you can use the Parser struct directly. For example, to parse with case-insensitivity:

use durstr::{Parser, ParserOptions};
use std::time::Duration;

let parser = Parser::new(ParserOptions::default().ignore_case(true));
let dur = parser.parse("1 MINUTE, 2 SECONDS");
assert_eq!(dur, Ok(Duration::from_secs(62)));

Units

By default, the following units are provided:

Unit Aliases
Millisecond ms, msec(s), millisecond(s)
Second s, sec(s), second(s)
Minute m, min(s), minute(s)
Hour h, hr(s), hour(s)

You can define your own units, and their values, using the ParserUnits struct:

use durstr::{Parser, ParserOptions, ParserUnits};
use std::time::Duration;

let mut units = ParserUnits::default();
units.add_unit("days", Duration::from_secs(3600) * 24);

let parser = Parser::new(ParserOptions::default().with_units(units));

let d = parser.parse("4 days");
assert_eq!(d, Ok(Duration::from_secs(3600) * 24 * 4));

About

A simple library for parsing human-readable strings into durations.

Resources

License

Stars

Watchers

Forks

Contributors

Languages