pub trait AsInteger {
fn as_criterium_i64(&self) -> i64;
}
impl AsInteger for i64 {
fn as_criterium_i64(&self) -> i64 {
return *self;
}
}
macro_rules! impl_primitive_as_integer {
($e:ty) => {
impl AsInteger for $e {
fn as_criterium_i64(&self) -> i64 {
return *self as i64;
}
}
};
}
impl_primitive_as_integer!(i8);
impl_primitive_as_integer!(u8);
impl_primitive_as_integer!(i16);
impl_primitive_as_integer!(u16);
impl_primitive_as_integer!(i32);
impl_primitive_as_integer!(u32);
#[cfg(feature = "chrono")]
mod chrono {
use super::AsInteger;
use chrono::DateTime;
use chrono::TimeZone;
impl<Tz: TimeZone> AsInteger for DateTime<Tz> {
fn as_criterium_i64(&self) -> i64 {
return self.timestamp();
}
}
}