12 releases
0.3.6 | Dec 1, 2024 |
---|---|
0.3.5 | Sep 16, 2024 |
0.3.4 | Apr 6, 2024 |
0.3.3 | Feb 13, 2024 |
0.1.1 | May 7, 2023 |
#132 in Date and time
380 downloads per month
1.5MB
47K
SLoC
Timelib for Rust
Timelib for Rust is a small Rust wrapper around the timelib library that is used to power PHP and MongoDB.
Installation
You can install with:
cargo add timelib
Usage
let tz = timelib::Timezone::parse("America/Chicago").expect("Error parsing timezone!");
timelib::strtotime("tomorrow", None, &tz);
timelib::strtotime("next tuesday", Some(1654318823), &tz);
View the tests for more examples.
Optional Features
The genereated re2c
outputs are bundled and automatically used. If you wish to generate these files yourself, do the following:
- Install
re2c
. You can install it easily on all major platforms:- Linux:
apt-get install re2c
- Mac:
brew install re2c
- Windows:
choco install re2c
- From source: re2c.org
- Linux:
- Enable the
re2c
feature:timelib = { version = "0.3", features = ["re2c"] }
Building
Make sure to check out all submodules.
Initial clone:
git clone --recurse-submodules https://github.com/westy92/timelib-rust
Post-clone:
git submodule init && git submodule update
You should now be able to run cargo build
and cargo test
.
If using the re2c
feature, make sure to install re2c
as described above. i.e. cargo test --features re2c
.
Updating the submodule version
git submodule update --remote
Make sure to regenerate the re2c outputs and copy them to pregenerated/
.
cd ext/timelib/
make parse_date.c parse_iso_intervals.c
cp parse_date.c ../../pregenerated/
cp parse_iso_intervals.c ../../pregenerated/
Publishing
Remove --dry-run
to publish for real.
cargo publish --dry-run