1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//! The collection of [time-rs/time](https://github.com/time-rs/time/) extensions
//! for calendar arithmetics, incomplete formats handling, imprecise time, and other
//! things [time] crate is not intended for.
//!
//! **Also check out other `xwde` projects [here](https://github.com/xwde).**
//!
//! ## Features
//!
//! - `serde` to enable `serde::Serialize` and `serde::Deserialize` impls.
//! - `rand` to enable `rand::distributions::Distribution` impls.
//!
//! ## Examples
//!
//! - Introduces [CalendarDuration] and extends [time::Date], [time::PrimitiveDateTime],
//! and [time::OffsetDateTime] with several methods to enable arithmetic operations
//! related to months and years. Additionally, attaches conversion methods to `i64`
//! and `f64` to improve ease of use.
//!
//! ```rust
//! use time::{Date, Month::*};
//! use timext::ext::NumericCalendarDuration;
//!
//! let d0 = Date::from_calendar_date(2023, January, 31);
//! let d1 = Date::from_calendar_date(2023, February, 28);
//! assert_eq!(d0.unwrap() + 1.months(), d1.unwrap());
//!
//! let d0 = Date::from_calendar_date(2024, February, 29);
//! let d1 = Date::from_calendar_date(2025, February, 28);
//! assert_eq!(d0.unwrap() + 1.years(), d1.unwrap());
//! ```
//!
//! - Implements its own [time::Time], [time::Date], [time::PrimitiveDateTime], and
//! [time::OffsetDateTime] types, that are convertable from/to original, but allow
//! incomplete time formats e.g. `xx:24:xx.845`, `1998-xx-02` or `2016-08 14:xx`.
//! Also extends them with parsing & formatting capabilities.
//!
//! ```rust
//! use time::{Date, Month::*};
//! use timext::{InComplete, InDate};
//!
//! let d0 = Date::from_calendar_date(2023, January, 28);
//! let d1 = InDate::from_calendar_date(None, None, Some(28));
//! let d1 = d1.unwrap();
//!
//! let d1 = d1.replace_year(Some(2023)).unwrap();
//! let d1 = d1.replace_month(Some(January)).unwrap();
//! assert_eq!(d0.unwrap(), d1.into_complete().unwrap());
//! ```
// TODO: Make everything const.
// see https://github.com/xwde/timext/issues/2
pub use *;
pub use *;
pub use *;