Expand description
Time values: points on the wall and monotonic clocks, counter readings, and the spans between them.
Each timeline has its own point, and each kind of count its own span. A point minus a point is a span, a point plus a span is a point, and points of two timelines never mix:
| Point | Timeline | Span |
|---|---|---|
Timestamp | the wall clock, from the Unix epoch | Timedelta |
TaiTimestamp | International Atomic Time, from 1970 TAI | Timedelta |
Uptime | the monotonic clock, from near boot | Timedelta |
RawUptime | the monotonic clock at the hardware’s rate | Timedelta |
BootUptime | the boot clock, suspensions counted | Timedelta |
Tickstamp | a hardware counter, from its own origin | Tickdelta |
Every point and span is an i64, and its operators saturate at the ends of the range rather
than overflow, each with a checked_* twin. Every value has a spelling, which Display writes
and FromStr reads back.
§Types
- Points.
TimestampandTaiTimestampname a moment another machine names too;Uptime,RawUptimeandBootUptimenever step; aTickstampis a counter’s reading.TimePointis what they share, for code generic over them. - Spans.
Timedeltacounts nanoseconds andTickdeltaa counter’s ticks; aTickRateturns one into the other. - Views.
Timedis a value and the stamp it was captured with;UtcDateTimeis a timestamp read as a date and a time of day. - Refusals.
ParseTimestampError,ParseTaiTimestampError,ParseTimedeltaError,ParseTickdeltaErrorandParseTickRateErrorfor a spelling that does not read;OutOfRangeErrorfor a time another type cannot hold.
§Examples
use t2t_core::{Timed, Timedelta, Timestamp};
let stale: Timedelta = "1s".parse()?;
let captured = Timestamp::from_secs(1_700_000_000);
let sample = Timed::new(captured, 101_u64);
assert!(sample.elapsed(captured + Timedelta::from_millis(1_500)) > stale, "stale by now");§Crate Features
None is on by default, and nothing reaches the operating system unless std is named; what
std adds is on 64-bit Linux and macOS.
| Feature | Adds |
|---|---|
std | SystemTime conversions |
serde | every value’s spelling, and the serde modules for counts in a named unit |
schemars | JsonSchema for every value with a spelling; turns serde on |
zerocopy | the zerocopy traits each type can honour, native-endian |
chrono-04 | conversions to and from chrono 0.4’s DateTime and TimeDelta |
jiff-02 | conversions to and from jiff 0.2’s Timestamp and SignedDuration |
time-03 | conversions to and from time 0.3’s OffsetDateTime and Duration |
Modules§
- serde
serde - How a time crosses to a config file, a log or a peer.
Structs§
- Boot
Uptime - A point on the boot clock, in nanoseconds since boot, the machine’s suspensions counted.
- OutOf
Range Error - Why a time does not fit the type it was converted to: a negative span for a
Duration, or a value past what a count of nanoseconds holds. - Parse
TaiTimestamp Error - Why a string is not a
TaiTimestamp. - Parse
Tick Rate Error - Why a string is not a
TickRate. - Parse
Tickdelta Error - Why a string is not a
Tickdelta, nor aTickstamp. - Parse
Timedelta Error - Why a string is not a
Timedelta, nor a point counted from boot. - Parse
Timestamp Error - Why a string is not a
Timestamp. - RawUptime
- A point on the monotonic clock at the hardware’s own rate, in nanoseconds since an origin near boot.
- TaiTimestamp
- A point on International Atomic Time, in nanoseconds since 1970-01-01T00:00:00 TAI.
- Tick
Rate - How many ticks a counter advances in a second: what turns
Tickdeltainto aTimedeltaand back. - Tickdelta
- A signed span of counter ticks: how far apart two
Tickstamps are. - Tickstamp
- A point on a hardware counter, in ticks since an origin the hardware chose.
- Timed
- A value
Tand the stampSits writer captured it with. - Timedelta
- A signed span of nanoseconds: how far apart two points on one timeline are.
- Timestamp
- A point on the wall clock, in nanoseconds since the Unix epoch.
- Uptime
- A point on the monotonic clock, in nanoseconds since an origin near boot.
- UtcDate
Time - A point on the wall clock read as a date and a time of day: UTC, in the proleptic Gregorian calendar.
Traits§
- Time
Point - A point on one timeline, carried as a count of its unit since the timeline’s origin, with the span between two of them.