iso8601/lib.rs
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
//! ISO8601 is a parser library for the
//! [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) format
//! and partially RFC3339.
//!
//! Validity of a given date is not guaranteed, this parser will happily parse
//! `"2015-02-29"` as a valid date,
//! even though 2015 was no leap year.
//!
//! # Example
//!
//! ```rust
//! let datetime = iso8601::datetime("2015-06-26T16:43:23+0200").unwrap();
//! let time = "16:43:23+0200".parse::<iso8601::Time>().unwrap();
//! let date = "2015-02-29".parse::<iso8601::Date>().unwrap();
//! let datetime = "2015-06-26T16:43:23+0200".parse::<iso8601::DateTime>().unwrap();
//! let duration = "P2021Y11M16DT23H26M59.123S".parse::<iso8601::Duration>().unwrap();
//! ```
#![allow(clippy::uninlined_format_args)]
#![deny(
missing_copy_implementations,
trivial_casts,
trivial_numeric_casts,
unsafe_code,
unused_import_braces,
unused_qualifications,
missing_docs
)]
#![warn(clippy::doc_markdown)]
#![no_std]
#[cfg(any(feature = "std", test))]
#[macro_use]
extern crate std;
#[macro_use]
extern crate alloc;
mod display;
pub mod parsers;
mod date;
pub use date::{date, Date};
mod time;
pub use time::{time, Time};
mod datetime;
pub use datetime::{datetime, DateTime};
mod duration;
pub use duration::{duration, Duration};
#[cfg(feature = "chrono")]
mod chrono;
#[cfg(feature = "serde")]
mod serde;
#[cfg(test)]
mod assert;