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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//! Time module provides a non-global clock, which should be passed
//! as an argument to functions which need to read the current time.
//! In particular try to avoid storing the clock instances in the objects.
//! Functions which use system clock directly are non-hermetic, which
//! makes them effectively non-deterministic and hard to test.
//!
//! Clock provides 2 types of time reads:
//! 1. now() (aka POSIX CLOCK_MONOTONIC, aka time::Instant)
//! time as perceived by the machine making the measurement.
//! The subsequent calls to now() are guaranteed to return monotonic
//! results. It should be used for measuring the latency of operations
//! as observed by the machine. The time::Instant itself doesn't
//! translate to any specific timestamp, so it is not meaningful for
//! anyone other than the machine doing the measurement.
//! 2. now_utc() (aka POSIX CLOCK_REALTIME, aka time::Utc)
//! expected to approximate the (global) UTC time.
//! There is NO guarantee that the subsequent reads will be monotonic,
//! as CLOCK_REALTIME it configurable in the OS settings, or can be updated
//! during NTP sync. Should be used whenever you need to communicate a timestamp
//! over the network, or store it for later use. Remember that clocks
//! of different machines are not perfectly synchronized, and in extreme
//! cases can be totally skewed.
pub use *;
pub use *;
pub use error;
// TODO: consider wrapping these types to prevent interactions
// with other time libraries, especially to prevent the direct access
// to the realtime (i.e. not through the Clock).
pub type Instant = Instant;
// TODO: OffsetDateTime stores the timestamp in a decomposed form of
// (year,month,day,hour,...). If we find it inefficient, we should
// probably migrate to a pure UNIX timestamp and convert is to datetime
// only when needed.
pub type Utc = OffsetDateTime;
pub type Duration = Duration;
// By the definition of derive(PartialEq), Finite(...) < Infinite.
pub type DurationSchemarsProvider = ;