Skip to main content

proto_types/duration/
mod.rs

1mod base;
2pub use base::DurationError;
3
4use crate::Duration;
5
6mod duration_impls;
7
8mod formatting;
9
10/// Structs for duration units such as Seconds and Minutes.
11pub 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	/// Whether the duration is negative or not.
21	#[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}