tzif/data/
time.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// This file is part of ICU4X. For terms of use, please see the file
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).

use std::ops::{Add, Sub};

/// The seconds unit of time.
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Seconds(pub i64);

/// The minutes unit of time.
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Minutes(pub i64);

/// The hours unit of time.
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Hours(pub i64);

impl Add for Seconds {
    type Output = Seconds;

    fn add(self, rhs: Self) -> Self::Output {
        Seconds(self.0 + rhs.0)
    }
}

impl Sub for Seconds {
    type Output = Seconds;

    fn sub(self, rhs: Self) -> Self::Output {
        Seconds(self.0 - rhs.0)
    }
}

impl Minutes {
    /// Returns the number of minutes in seconds.
    pub fn as_seconds(self) -> Seconds {
        Seconds(self.0 * 60)
    }
}

impl Hours {
    /// Returns the number of hours in seconds.
    pub fn as_seconds(self) -> Seconds {
        Seconds(self.0 * 60 * 60)
    }
}