proto_types/duration/
mod.rs1mod base;
2pub use base::DurationError;
3
4use crate::Duration;
5
6mod duration_impls;
7
8mod formatting;
9
10pub mod data {
12 pub use super::{duration_data::*, duration_units::*};
13}
14
15mod duration_data;
16mod duration_operations;
17mod duration_units;
18
19impl Duration {
20 #[must_use]
22 #[inline]
23 pub const fn is_negative(&self) -> bool {
24 self.seconds < 0 || (self.seconds == 0 && self.nanos < 0)
25 }
26
27 #[must_use]
28 #[inline]
29 pub fn new(seconds: i64, nanos: i32) -> Self {
30 let mut instance = Self { seconds, nanos };
31 instance.normalize();
32 instance
33 }
34}
35
36#[cfg(test)]
37mod test {
38 use crate::Duration;
39
40 #[test]
41 fn basic_tests() {
42 let positive = Duration {
43 seconds: 1,
44 nanos: 0,
45 };
46 assert!(!positive.is_negative());
47
48 let zero = Duration::default();
49 assert!(!zero.is_negative());
50
51 let negative = Duration::new(-1, 0);
52 assert!(negative.is_negative());
53 }
54}