Struct kitsune_p2p_timestamp::Timestamp [−][src]
pub struct Timestamp(_);
Expand description
A microsecond-precision UTC timestamp for use in Holochain’s headers.
It is assumed to be untrustworthy:
it may contain times offset from the UNIX epoch with the full +/- i64 range.
Most of these times are not representable by a chrono::DateTime
Also, most differences between two Timestamps are not representable by either a chrono::Duration (which limits itself to +/- i64 microseconds), nor by core::time::Duration (which limits itself to +’ve u64 seconds). Many constructions of these chrono and core::time types will panic!, so painful measures must be taken to avoid this outcome – it is not acceptable for our core Holochain algorithms to panic when accessing DHT Header information committed by other random Holochain nodes!
Timestamp implements Serialize
and Display
as rfc3339 time strings (if possible).
Supports +/- chrono::Duration directly. There is no Timestamp::now() method, since this is not supported by WASM; however, holochain_types provides a Timestamp::now() method.
Implementations
Construct from microseconds
Access seconds since UNIX epoch plus nanosecond offset
Compute signed difference between two Timestamp, returning None
if overflow occurred, or
Some(chrono::Duration). Produces Duration for differences of up to +/- i64::MIN/MAX
microseconds.
Add a signed chrono::Duration{ secs: i64, nanos: i32 } to a Timestamp.
Subtracts a chrono::Duration from a Timestamp
Add unsigned core::time::Duration{ secs: u64, nanos: u32 } to a Timestamp. See: https://doc.rust-lang.org/src/core/time.rs.html#53-56
Sub unsigned core::time::Duration{ secs: u64, nanos: u32 } from a Timestamp.
Add a duration, clamping to MAX if overflow
Subtract a duration, clamping to MIN if overflow
Convert this timestamp to fit into a SQLite integer which is an i64. The value will be clamped to the valid range supported by SQLite
Trait Implementations
Timestamp +/- Intocore::time::Duration: Anything that can be converted into a core::time::Duration can be used as an overflow-checked offset (unsigned) for a Timestamp. A core::time::Duration allows only +’ve offsets
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Display as RFC3339 Date+Time for sane value ranges (0000-9999AD). Beyond that, format as (seconds, nanoseconds) tuple (output and parsing of large +/- years is unreliable).
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Timestamp - core::time::Duration.
Distance between two Timestamps as a chrono::Duration (subject to overflow). A Timestamp represents a signed distance from the UNIX Epoch (1970-01-01T00:00:00Z). A chrono::Duration is limited to +/- i64::MIN/MAX microseconds.
Auto Trait Implementations
impl RefUnwindSafe for Timestamp
impl UnwindSafe for Timestamp
Blanket Implementations
Mutably borrows from an owned value. Read more