summaryrefslogtreecommitdiffstats
path: root/src/timetype.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/timetype.rs')
-rw-r--r--src/timetype.rs304
1 files changed, 158 insertions, 146 deletions
diff --git a/src/timetype.rs b/src/timetype.rs
index 8d12226..3d02c57 100644
--- a/src/timetype.rs
+++ b/src/timetype.rs
@@ -5,15 +5,15 @@ use chrono::NaiveDateTime;
use chrono::NaiveDate;
use chrono::Datelike;
use chrono::Timelike;
+use failure::Fallible as Result;
+use failure::Error;
use std::ops::Add;
use std::ops::AddAssign;
use std::ops::Sub;
use std::ops::SubAssign;
-use error::Result;
-use error::KairosErrorKind as KEK;
-use error::KairosError as KE;
+use error::ErrorKind as KEK;
use indicator::{Day, Month};
use util::*;
@@ -395,7 +395,7 @@ impl TimeType {
match *self {
TT::Moment(m) => Ok(m.weekday() == d.into()),
- _ => Err(KE::from_kind(KEK::CannotCompareDayTo(self.name()))),
+ _ => Err(Error::from(KEK::CannotCompareDayTo(self.name()))),
}
}
@@ -406,7 +406,7 @@ impl TimeType {
match *self {
TT::Moment(m) => Ok(m.month() == month.into()),
- _ => Err(KE::from_kind(KEK::CannotCompareMonthTo(self.name()))),
+ _ => Err(Error::from(KEK::CannotCompareMonthTo(self.name()))),
}
}
@@ -481,11 +481,12 @@ fn end_of_year(tt: TimeType) -> Result<TimeType> {
els @ TT::Months(_) |
els @ TT::Years(_) |
els @ TT::Addition(_, _) |
- els @ TT::Subtraction(_, _) => Err(KE::from_kind(KEK::CannotCalculateEndOfYearOn(els))),
+ els @ TT::Subtraction(_, _) => Err(Error::from(KEK::CannotCalculateEndOfYearOn(els))),
TT::Moment(m) => NaiveDate::from_ymd_opt(m.year(), 12, 31)
.map(|nd| nd.and_hms(0, 0, 0))
.map(TT::moment)
- .ok_or(KEK::OutOfBounds(m.year() as i32, 12, 31, 0, 0, 0).into()),
+ .ok_or(KEK::OutOfBounds(m.year() as i32, 12, 31, 0, 0, 0))
+ .map_err(Error::from),
TT::EndOfYear(e) => do_calculate(*e),
TT::EndOfMonth(e) => do_calculate(*e),
@@ -510,13 +511,14 @@ fn end_of_month(tt: TimeType) -> Result<TimeType> {
els @ TT::Months(_) |
els @ TT::Years(_) |
els @ TT::Addition(_, _) |
- els @ TT::Subtraction(_, _) => Err(KE::from_kind(KEK::CannotCalculateEndOfMonthOn(els))),
+ els @ TT::Subtraction(_, _) => Err(Error::from(KEK::CannotCalculateEndOfMonthOn(els))),
TT::Moment(m) => {
let last_day = get_num_of_days_in_month(m.year() as i64, m.month() as i64) as u32;
NaiveDate::from_ymd_opt(m.year(), m.month(), last_day)
.map(|nd| nd.and_hms(0, 0, 0))
.map(TT::moment)
- .ok_or(KEK::OutOfBounds(m.year() as i32, m.month() as u32, last_day, 0, 0, 0).into())
+ .ok_or(KEK::OutOfBounds(m.year() as i32, m.month() as u32, last_day, 0, 0, 0))
+ .map_err(Error::from)
},
TT::EndOfYear(e) => do_calculate(*e),
TT::EndOfMonth(e) => do_calculate(*e),
@@ -541,11 +543,12 @@ fn end_of_day(tt: TimeType) -> Result<TimeType> {
els @ TT::Months(_) |
els @ TT::Years(_) |
els @ TT::Addition(_, _) |
- els @ TT::Subtraction(_, _) => Err(KE::from_kind(KEK::CannotCalculateEndOfMonthOn(els))),
+ els @ TT::Subtraction(_, _) => Err(Error::from(KEK::CannotCalculateEndOfMonthOn(els))),
TT::Moment(m) => NaiveDate::from_ymd_opt(m.year(), m.month(), m.day())
.map(|nd| nd.and_hms(23, 59, 59))
.map(TT::moment)
- .ok_or(KEK::OutOfBounds(m.year() as i32, m.month() as u32, m.day() as u32, 23, 59, 59).into()),
+ .ok_or(KEK::OutOfBounds(m.year() as i32, m.month() as u32, m.day() as u32, 23, 59, 59))
+ .map_err(Error::from),
TT::EndOfYear(e) => do_calculate(*e),
TT::EndOfMonth(e) => do_calculate(*e),
TT::EndOfDay(e) => do_calculate(*e),
@@ -569,11 +572,12 @@ fn end_of_hour(tt: TimeType) -> Result<TimeType> {
els @ TT::Months(_) |
els @ TT::Years(_) |
els @ TT::Addition(_, _) |
- els @ TT::Subtraction(_, _) => Err(KE::from_kind(KEK::CannotCalculateEndOfMonthOn(els))),
+ els @ TT::Subtraction(_, _) => Err(Error::from(KEK::CannotCalculateEndOfMonthOn(els))),
TT::Moment(m) => NaiveDate::from_ymd_opt(m.year(), m.month(), m.day())
.and_then(|nd| nd.and_hms_opt(m.hour(), 59, 59))
.map(TT::moment)
- .ok_or(KEK::OutOfBounds(m.year() as i32, m.month() as u32, m.day() as u32, m.hour() as u32, 59, 59).into()),
+ .ok_or(KEK::OutOfBounds(m.year() as i32, m.month() as u32, m.day() as u32, m.hour() as u32, 59, 59))
+ .map_err(Error::from),
TT::EndOfYear(e) => do_calculate(*e),
TT::EndOfMonth(e) => do_calculate(*e),
TT::EndOfDay(e) => do_calculate(*e),
@@ -597,11 +601,12 @@ fn end_of_minute(tt: TimeType) -> Result<TimeType> {
els @ TT::Months(_) |
els @ TT::Years(_) |
els @ TT::Addition(_, _) |
- els @ TT::Subtraction(_, _) => Err(KE::from_kind(KEK::CannotCalculateEndOfMonthOn(els))),
+ els @ TT::Subtraction(_, _) => Err(Error::from(KEK::CannotCalculateEndOfMonthOn(els))),
TT::Moment(m) => NaiveDate::from_ymd_opt(m.year(), m.month(), m.day())
.and_then(|nd| nd.and_hms_opt(m.hour(), m.minute(), 59))
.map(TT::moment)
- .ok_or(KEK::OutOfBounds(m.year() as i32, m.month() as u32, m.day() as u32, m.hour() as u32, m.minute() as u32, 59 as u32).into()),
+ .ok_or(KEK::OutOfBounds(m.year() as i32, m.month() as u32, m.day() as u32, m.hour() as u32, m.minute() as u32, 59 as u32))
+ .map_err(Error::from),
TT::EndOfYear(e) => do_calculate(*e),
TT::EndOfMonth(e) => do_calculate(*e),
TT::EndOfDay(e) => do_calculate(*e),
@@ -615,7 +620,7 @@ fn add(a: Box<TimeType>, b: Box<TimeType>) -> Result<TimeType> {
match (*a, *b) {
(TT::Moment(mom), thing) => add_to_moment(mom, thing),
- (thing, TT::Moment(mom)) => Err(KE::from_kind(KEK::CannotAdd(thing, TT::Moment(mom)))),
+ (thing, TT::Moment(mom)) => Err(Error::from(KEK::CannotAdd(thing, TT::Moment(mom)))),
(TT::Seconds(a), other) => add_to_seconds(a, other),
(TT::Minutes(a), other) => add_to_minutes(a, other),
@@ -638,21 +643,21 @@ fn add(a: Box<TimeType>, b: Box<TimeType>) -> Result<TimeType> {
.and_then(|bx| add(Box::new(other), bx))
.and_then(|rx| sub(Box::new(rx), b)),
- (TT::EndOfYear(e), other) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfYear(e)))),
- (other, TT::EndOfYear(e)) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfYear(e)))),
+ (TT::EndOfYear(e), other) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfYear(e)))),
+ (other, TT::EndOfYear(e)) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfYear(e)))),
- (TT::EndOfMonth(e), other) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfMonth(e)))),
- (other, TT::EndOfMonth(e)) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfMonth(e)))),
+ (TT::EndOfMonth(e), other) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfMonth(e)))),
+ (other, TT::EndOfMonth(e)) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfMonth(e)))),
- (TT::EndOfDay(e), other) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfDay(e)))),
- (other, TT::EndOfDay(e)) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfDay(e)))),
+ (TT::EndOfDay(e), other) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfDay(e)))),
+ (other, TT::EndOfDay(e)) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfDay(e)))),
- (TT::EndOfHour(e), other) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfHour(e)))),
- (other, TT::EndOfHour(e)) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfHour(e)))),
+ (TT::EndOfHour(e), other) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfHour(e)))),
+ (other, TT::EndOfHour(e)) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfHour(e)))),
- (TT::EndOfMinute(e), other) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfMinute(e)))),
+ (TT::EndOfMinute(e), other) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfMinute(e)))),
// unreachable, just for completeness:
- //(other, TT::EndOfMinute(e)) => Err(KE::from_kind(KEK::CannotAdd(other, TT::EndOfMinute(e)))),
+ //(other, TT::EndOfMinute(e)) => Err(Error::from(KEK::CannotAdd(other, TT::EndOfMinute(e)))),
}
}
@@ -666,12 +671,12 @@ fn add_to_seconds(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Seconds(a * 60 * 60 * 24 + amount)),
TT::Months(a) => Ok(TT::Seconds(a * 60 * 60 * 24 * 30 + amount)),
TT::Years(a) => Ok(TT::Seconds(a * 60 * 60 * 24 * 30 * 12 + amount)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotAdd(TT::Seconds(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotAdd(TT::Seconds(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotAdd(TT::Seconds(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => add_to_seconds(amount, try!(add(b, c))),
TT::Subtraction(b, c) => add_to_seconds(amount, try!(sub(b, c))),
}
@@ -687,12 +692,12 @@ fn add_to_minutes(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Minutes(a * 60 * 24 + amount)),
TT::Months(a) => Ok(TT::Minutes(a * 60 * 24 * 30 + amount)),
TT::Years(a) => Ok(TT::Minutes(a * 60 * 24 * 30 * 12 + amount)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotAdd(TT::Minutes(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotAdd(TT::Minutes(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotAdd(TT::Minutes(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => add_to_minutes(amount, try!(add(b, c))),
TT::Subtraction(b, c) => add_to_minutes(amount, try!(sub(b, c))),
}
@@ -708,12 +713,12 @@ fn add_to_hours(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Hours( a * 24 + amount)),
TT::Months(a) => Ok(TT::Hours( a * 24 * 30 + amount)),
TT::Years(a) => Ok(TT::Hours( a * 24 * 30 * 12 + amount)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotAdd(TT::Hours(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Hours(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Hours(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Hours(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Hours(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Hours(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotAdd(TT::Hours(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotAdd(TT::Hours(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotAdd(TT::Hours(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotAdd(TT::Hours(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotAdd(TT::Hours(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotAdd(TT::Hours(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => add_to_hours(amount, try!(add(b, c))),
TT::Subtraction(b, c) => add_to_hours(amount, try!(sub(b, c))),
}
@@ -729,12 +734,12 @@ fn add_to_days(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Days( a + amount)),
TT::Months(a) => Ok(TT::Days( a * 30 + amount)),
TT::Years(a) => Ok(TT::Days( a * 30 * 12 + amount)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotAdd(TT::Days(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Days(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Days(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Days(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Days(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Days(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotAdd(TT::Days(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotAdd(TT::Days(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotAdd(TT::Days(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotAdd(TT::Days(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotAdd(TT::Days(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotAdd(TT::Days(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => add_to_days(amount, try!(add(b, c))),
TT::Subtraction(b, c) => add_to_days(amount, try!(sub(b, c))),
}
@@ -750,12 +755,12 @@ fn add_to_months(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Days( a + amount * 30)),
TT::Months(a) => Ok(TT::Months( a + amount)),
TT::Years(a) => Ok(TT::Months( a * 12 + amount)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotAdd(TT::Months(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Months(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Months(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Months(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Months(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Months(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotAdd(TT::Months(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotAdd(TT::Months(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotAdd(TT::Months(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotAdd(TT::Months(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotAdd(TT::Months(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotAdd(TT::Months(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => add_to_months(amount, try!(add(b, c))),
TT::Subtraction(b, c) => add_to_months(amount, try!(sub(b, c))),
}
@@ -771,12 +776,12 @@ fn add_to_years(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Days( a + amount * 12 * 30)),
TT::Months(a) => Ok(TT::Months( a + amount * 12)),
TT::Years(a) => Ok(TT::Years( a + amount)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotAdd(TT::Years(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Years(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Years(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Years(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Years(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Years(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotAdd(TT::Years(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotAdd(TT::Years(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotAdd(TT::Years(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotAdd(TT::Years(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotAdd(TT::Years(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotAdd(TT::Years(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => add_to_years(amount, try!(add(b, c))),
TT::Subtraction(b, c) => add_to_years(amount, try!(sub(b, c))),
}
@@ -798,8 +803,8 @@ fn add_to_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Minutes(a) => {
@@ -814,8 +819,8 @@ fn add_to_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Hours(a) => {
@@ -830,8 +835,8 @@ fn add_to_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Days(a) => {
@@ -846,8 +851,8 @@ fn add_to_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Months(a) => {
@@ -862,8 +867,8 @@ fn add_to_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Years(a) => {
@@ -878,16 +883,16 @@ fn add_to_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotAdd(TT::Moment(mom), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Moment(mom), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Moment(mom), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Moment(mom), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Moment(mom), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotAdd(TT::Moment(mom), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotAdd(TT::Moment(mom), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotAdd(TT::Moment(mom), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotAdd(TT::Moment(mom), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotAdd(TT::Moment(mom), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotAdd(TT::Moment(mom), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotAdd(TT::Moment(mom), TT::EndOfMinute(e)))),
TT::Addition(a, b) => add_to_moment(mom, try!(add(a, b))),
TT::Subtraction(a, b) => add_to_moment(mom, try!(sub(a, b))),
}
@@ -919,21 +924,21 @@ fn sub(a: Box<TimeType>, b: Box<TimeType>) -> Result<TimeType> {
.and_then(|bx| sub(Box::new(other), bx))
.and_then(|rx| add(Box::new(rx), b)),
- (TT::EndOfYear(e), other) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfYear(e)))),
- (other, TT::EndOfYear(e)) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfYear(e)))),
+ (TT::EndOfYear(e), other) => Err(Error::from(KEK::CannotSub(other, TT::EndOfYear(e)))),
+ (other, TT::EndOfYear(e)) => Err(Error::from(KEK::CannotSub(other, TT::EndOfYear(e)))),
- (TT::EndOfMonth(e), other) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfMonth(e)))),
- (other, TT::EndOfMonth(e)) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfMonth(e)))),
+ (TT::EndOfMonth(e), other) => Err(Error::from(KEK::CannotSub(other, TT::EndOfMonth(e)))),
+ (other, TT::EndOfMonth(e)) => Err(Error::from(KEK::CannotSub(other, TT::EndOfMonth(e)))),
- (TT::EndOfDay(e), other) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfDay(e)))),
- (other, TT::EndOfDay(e)) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfDay(e)))),
+ (TT::EndOfDay(e), other) => Err(Error::from(KEK::CannotSub(other, TT::EndOfDay(e)))),
+ (other, TT::EndOfDay(e)) => Err(Error::from(KEK::CannotSub(other, TT::EndOfDay(e)))),
- (TT::EndOfHour(e), other) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfHour(e)))),
- (other, TT::EndOfHour(e)) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfHour(e)))),
+ (TT::EndOfHour(e), other) => Err(Error::from(KEK::CannotSub(other, TT::EndOfHour(e)))),
+ (other, TT::EndOfHour(e)) => Err(Error::from(KEK::CannotSub(other, TT::EndOfHour(e)))),
- (TT::EndOfMinute(e), other) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfMinute(e)))),
+ (TT::EndOfMinute(e), other) => Err(Error::from(KEK::CannotSub(other, TT::EndOfMinute(e)))),
// unreachable, but for completeness
- //(other, TT::EndOfMinute(e)) => Err(KE::from_kind(KEK::CannotSub(other, TT::EndOfMinute(e)))),
+ //(other, TT::EndOfMinute(e)) => Err(Error::from(KEK::CannotSub(other, TT::EndOfMinute(e)))),
}
}
@@ -947,12 +952,12 @@ fn sub_from_seconds(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Seconds(amount - a * 60 * 60 * 24)),
TT::Months(a) => Ok(TT::Seconds(amount - a * 60 * 60 * 24 * 30)),
TT::Years(a) => Ok(TT::Seconds(amount - a * 60 * 60 * 24 * 30 * 12)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotSub(TT::Seconds(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotSub(TT::Seconds(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotSub(TT::Seconds(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotSub(TT::Seconds(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotSub(TT::Seconds(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotSub(TT::Seconds(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotSub(TT::Seconds(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotSub(TT::Seconds(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotSub(TT::Seconds(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotSub(TT::Seconds(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotSub(TT::Seconds(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotSub(TT::Seconds(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => sub_from_seconds(amount, try!(add(b, c))),
TT::Subtraction(b, c) => sub_from_seconds(amount, try!(sub(b, c))),
}
@@ -968,12 +973,12 @@ fn sub_from_minutes(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Minutes(amount - a * 60 * 24)),
TT::Months(a) => Ok(TT::Minutes(amount - a * 60 * 24 * 30)),
TT::Years(a) => Ok(TT::Minutes(amount - a * 60 * 24 * 30 * 12)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotSub(TT::Minutes(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotSub(TT::Minutes(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotSub(TT::Minutes(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotSub(TT::Minutes(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotSub(TT::Minutes(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotSub(TT::Minutes(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotSub(TT::Minutes(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotSub(TT::Minutes(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotSub(TT::Minutes(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotSub(TT::Minutes(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotSub(TT::Minutes(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotSub(TT::Minutes(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => sub_from_minutes(amount, try!(add(b, c))),
TT::Subtraction(b, c) => sub_from_minutes(amount, try!(sub(b, c))),
}
@@ -989,12 +994,12 @@ fn sub_from_hours(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Hours(amount - a * 24)),
TT::Months(a) => Ok(TT::Hours(amount - a * 24 * 30)),
TT::Years(a) => Ok(TT::Hours(amount - a * 24 * 30 * 12)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotSub(TT::Hours(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotSub(TT::Hours(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotSub(TT::Hours(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotSub(TT::Hours(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotSub(TT::Hours(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotSub(TT::Hours(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotSub(TT::Hours(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotSub(TT::Hours(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotSub(TT::Hours(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotSub(TT::Hours(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotSub(TT::Hours(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotSub(TT::Hours(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => sub_from_hours(amount, try!(add(b, c))),
TT::Subtraction(b, c) => sub_from_hours(amount, try!(sub(b, c))),
}
@@ -1010,12 +1015,12 @@ fn sub_from_days(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Days(amount - a)),
TT::Months(a) => Ok(TT::Days(amount - a * 30)),
TT::Years(a) => Ok(TT::Days(amount - a * 30 * 12)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotSub(TT::Days(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotSub(TT::Days(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotSub(TT::Days(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotSub(TT::Days(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotSub(TT::Days(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotSub(TT::Days(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotSub(TT::Days(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotSub(TT::Days(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotSub(TT::Days(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotSub(TT::Days(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotSub(TT::Days(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotSub(TT::Days(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => sub_from_days(amount, try!(add(b, c))),
TT::Subtraction(b, c) => sub_from_days(amount, try!(sub(b, c))),
}
@@ -1031,12 +1036,12 @@ fn sub_from_months(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Days(amount * 30 - a)),
TT::Months(a) => Ok(TT::Months(amount - a)),
TT::Years(a) => Ok(TT::Months(amount - a * 12)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotSub(TT::Months(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotSub(TT::Months(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotSub(TT::Months(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotSub(TT::Months(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotSub(TT::Months(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotSub(TT::Months(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotSub(TT::Months(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotSub(TT::Months(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotSub(TT::Months(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotSub(TT::Months(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotSub(TT::Months(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotSub(TT::Months(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => sub_from_months(amount, try!(add(b, c))),
TT::Subtraction(b, c) => sub_from_months(amount, try!(sub(b, c))),
}
@@ -1052,12 +1057,12 @@ fn sub_from_years(amount: i64, tt: TimeType) -> Result<TimeType> {
TT::Days(a) => Ok(TT::Days(amount * 12 * 30 - a)),
TT::Months(a) => Ok(TT::Months(amount * 12 - a)),
TT::Years(a) => Ok(TT::Years(amount - a)),
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotSub(TT::Years(amount), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotSub(TT::Years(amount), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotSub(TT::Years(amount), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotSub(TT::Years(amount), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotSub(TT::Years(amount), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotSub(TT::Years(amount), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotSub(TT::Years(amount), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotSub(TT::Years(amount), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotSub(TT::Years(amount), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotSub(TT::Years(amount), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotSub(TT::Years(amount), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotSub(TT::Years(amount), TT::EndOfMinute(e)))),
TT::Addition(b, c) => sub_from_years(amount, try!(add(b, c))),
TT::Subtraction(b, c) => sub_from_years(amount, try!(sub(b, c))),
}
@@ -1079,8 +1084,8 @@ fn sub_from_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, d as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Minutes(a) => {
@@ -1095,8 +1100,8 @@ fn sub_from_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, d as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Hours(a) => {
@@ -1111,8 +1116,8 @@ fn sub_from_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, d as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Days(a) => {
@@ -1127,8 +1132,8 @@ fn sub_from_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, d as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Months(a) => {
@@ -1143,8 +1148,8 @@ fn sub_from_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, d as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
TT::Years(a) => {
@@ -1159,16 +1164,16 @@ fn sub_from_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
let tt = NaiveDate::from_ymd_opt(y as i32, mo as u32, d as u32)
.and_then(|nd| nd.and_hms_opt(h as u32, mi as u32, s as u32))
- .ok_or(KEK::OutOfBounds(y as i32, mo as u32, d as u32, h as u32, mi as u32, s as u32).into())
- .map_err(KE::from_kind)?;
+ .ok_or(KEK::OutOfBounds(y as i32, mo as u32, h as u32, h as u32, mi as u32, s as u32))
+ .map_err(Error::from)?;
Ok(TimeType::moment(tt))
},
- TT::Moment(m) => Err(KE::from_kind(KEK::CannotSub(TT::Moment(mom), TT::Moment(m)))),
- TT::EndOfYear(e) => Err(KE::from_kind(KEK::CannotSub(TT::Moment(mom), TT::EndOfYear(e)))),
- TT::EndOfMonth(e) => Err(KE::from_kind(KEK::CannotSub(TT::Moment(mom), TT::EndOfMonth(e)))),
- TT::EndOfDay(e) => Err(KE::from_kind(KEK::CannotSub(TT::Moment(mom), TT::EndOfDay(e)))),
- TT::EndOfHour(e) => Err(KE::from_kind(KEK::CannotSub(TT::Moment(mom), TT::EndOfHour(e)))),
- TT::EndOfMinute(e) => Err(KE::from_kind(KEK::CannotSub(TT::Moment(mom), TT::EndOfMinute(e)))),
+ TT::Moment(m) => Err(Error::from(KEK::CannotSub(TT::Moment(mom), TT::Moment(m)))),
+ TT::EndOfYear(e) => Err(Error::from(KEK::CannotSub(TT::Moment(mom), TT::EndOfYear(e)))),
+ TT::EndOfMonth(e) => Err(Error::from(KEK::CannotSub(TT::Moment(mom), TT::EndOfMonth(e)))),
+ TT::EndOfDay(e) => Err(Error::from(KEK::CannotSub(TT::Moment(mom), TT::EndOfDay(e)))),
+ TT::EndOfHour(e) => Err(Error::from(KEK::CannotSub(TT::Moment(mom), TT::EndOfHour(e)))),
+ TT::EndOfMinute(e) => Err(Error::from(KEK::CannotSub(TT::Moment(mom), TT::EndOfMinute(e)))),
TT::Addition(a, b) => sub_from_moment(mom, try!(add(a, b))),
TT::Subtraction(a, b) => sub_from_moment(mom, try!(sub(a, b))),
}
@@ -1178,6 +1183,7 @@ fn sub_from_moment(mom: NaiveDateTime, tt: TimeType) -> Result<TimeType> {
mod tests {
use chrono::NaiveDate;
use super::TimeType as TT;
+ use error::ErrorKind;
#[test]
fn test_addition_of_seconds() {
@@ -1892,7 +1898,10 @@ mod tests {
assert!(res.is_err());
let res = res.unwrap_err();
- assert_eq!("Cannot add", res.kind().description());
+ assert!(match res.downcast_ref::<ErrorKind>() {
+ Some(&ErrorKind::CannotAdd(..)) => true,
+ _ => false,
+ });
}
#[test]
@@ -1905,7 +1914,10 @@ mod tests {
assert!(res.is_err());
let res = res.unwrap_err();
- assert_eq!("Cannot subtract", res.kind().description());
+ assert!(match res.downcast_ref::<ErrorKind>() {
+ Some(&ErrorKind::CannotSub(..)) => true,
+ _ => false,
+ });
}
}