use core::cmp::Ordering; use core::ops::Sub; use crate::{Duration, OffsetDateTime, UtcDateTime}; impl Sub for UtcDateTime { type Output = Duration; /// # Panics /// /// This may panic if an overflow occurs. fn sub(self, rhs: OffsetDateTime) -> Self::Output { OffsetDateTime::from(self) - rhs } } impl Sub for OffsetDateTime { type Output = Duration; /// # Panics /// /// This may panic if an overflow occurs. fn sub(self, rhs: UtcDateTime) -> Self::Output { self - Self::from(rhs) } } impl PartialEq for UtcDateTime { fn eq(&self, other: &OffsetDateTime) -> bool { OffsetDateTime::from(*self) == *other } } impl PartialEq for OffsetDateTime { fn eq(&self, other: &UtcDateTime) -> bool { *self == Self::from(*other) } } impl PartialOrd for UtcDateTime { fn partial_cmp(&self, other: &OffsetDateTime) -> Option { OffsetDateTime::from(*self).partial_cmp(other) } } impl PartialOrd for OffsetDateTime { fn partial_cmp(&self, other: &UtcDateTime) -> Option { self.partial_cmp(&Self::from(*other)) } } impl From for UtcDateTime { /// # Panics /// /// This may panic if an overflow occurs. fn from(datetime: OffsetDateTime) -> Self { datetime.to_utc() } } impl From for OffsetDateTime { /// # Panics /// /// This may panic if an overflow occurs. fn from(datetime: UtcDateTime) -> Self { datetime.as_primitive().assume_utc() } }