mod base;
pub use base::DurationError;
use crate::Duration;
mod duration_impls;
mod formatting;
pub mod data {
pub use super::{duration_data::*, duration_units::*};
}
mod duration_data;
mod duration_operations;
mod duration_units;
impl Duration {
#[must_use]
#[inline]
pub const fn is_negative(&self) -> bool {
self.seconds < 0 || (self.seconds == 0 && self.nanos < 0)
}
#[must_use]
#[inline]
pub fn new(seconds: i64, nanos: i32) -> Self {
let mut instance = Self { seconds, nanos };
instance.normalize();
instance
}
}
#[cfg(test)]
mod test {
use crate::Duration;
#[test]
fn basic_tests() {
let positive = Duration {
seconds: 1,
nanos: 0,
};
assert!(!positive.is_negative());
let zero = Duration::default();
assert!(!zero.is_negative());
let negative = Duration::new(-1, 0);
assert!(negative.is_negative());
}
}