]> git.lizzy.rs Git - rust.git/blob - src/libstd/sys/sgx/time.rs
Improve some compiletest documentation
[rust.git] / src / libstd / sys / sgx / time.rs
1 use crate::time::Duration;
2 use super::abi::usercalls;
3
4 #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)]
5 pub struct Instant(Duration);
6
7 #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)]
8 pub struct SystemTime(Duration);
9
10 pub const UNIX_EPOCH: SystemTime = SystemTime(Duration::from_secs(0));
11
12 impl Instant {
13     pub fn now() -> Instant {
14         Instant(usercalls::insecure_time())
15     }
16
17     pub fn sub_instant(&self, other: &Instant) -> Duration {
18         self.0 - other.0
19     }
20
21     pub fn checked_add_duration(&self, other: &Duration) -> Option<Instant> {
22         Some(Instant(self.0.checked_add(*other)?))
23     }
24
25     pub fn checked_sub_duration(&self, other: &Duration) -> Option<Instant> {
26         Some(Instant(self.0.checked_sub(*other)?))
27     }
28
29     pub fn actually_monotonic() -> bool {
30         false
31     }
32
33     pub const fn zero() -> Instant {
34         Instant(Duration::from_secs(0))
35     }
36 }
37
38 impl SystemTime {
39     pub fn now() -> SystemTime {
40         SystemTime(usercalls::insecure_time())
41     }
42
43     pub fn sub_time(&self, other: &SystemTime)
44                     -> Result<Duration, Duration> {
45         self.0.checked_sub(other.0).ok_or_else(|| other.0 - self.0)
46     }
47
48     pub fn checked_add_duration(&self, other: &Duration) -> Option<SystemTime> {
49         Some(SystemTime(self.0.checked_add(*other)?))
50     }
51
52     pub fn checked_sub_duration(&self, other: &Duration) -> Option<SystemTime> {
53         Some(SystemTime(self.0.checked_sub(*other)?))
54     }
55 }