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
#[macro_use] extern crate nom;

macro_rules! impl_fromstr_parse {
    ($ty:ty, $func:ident) => {
        impl ::std::str::FromStr for $ty {
            type Err = ();

            fn from_str(s: &str) -> Result<Self, Self::Err> {
                ::parse::$func(s.as_bytes())
                    .map(|x| x.1)
                    .or(Err(()))
            }
        }
    }
}

mod date;
mod time;
mod datetime;
mod parse;
pub mod chrono;

pub use {
    date::*,
    time::*,
    datetime::*
};

pub trait Valid {
    fn is_valid(&self) -> bool;
}