Struct holochain_zome_types::prelude::Timestamp
source · [−]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
sourceimpl Timestamp
impl Timestamp
sourcepub fn now() -> Timestamp
pub fn now() -> Timestamp
Returns the current system time as a Timestamp.
This is behind a feature because we need Timestamp to be WASM compatible, and chrono doesn’t have a now() implementation for WASM.
sourcepub fn from_micros(micros: i64) -> Timestamp
pub fn from_micros(micros: i64) -> Timestamp
Construct from microseconds
sourcepub fn as_seconds_and_nanos(&self) -> (i64, u32)
pub fn as_seconds_and_nanos(&self) -> (i64, u32)
Access seconds since UNIX epoch plus nanosecond offset
sourcepub fn checked_difference_signed(&self, rhs: &Timestamp) -> Option<Duration>
pub fn checked_difference_signed(&self, rhs: &Timestamp) -> Option<Duration>
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.
sourcepub fn checked_add_signed(&self, rhs: &Duration) -> Option<Timestamp>
pub fn checked_add_signed(&self, rhs: &Duration) -> Option<Timestamp>
Add a signed chrono::Duration{ secs: i64, nanos: i32 } to a Timestamp.
sourcepub fn checked_sub_signed(&self, rhs: &Duration) -> Option<Timestamp>
pub fn checked_sub_signed(&self, rhs: &Duration) -> Option<Timestamp>
Subtracts a chrono::Duration from a Timestamp
sourcepub fn checked_add(&self, rhs: &Duration) -> Option<Timestamp>
pub fn checked_add(&self, rhs: &Duration) -> Option<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
sourcepub fn checked_sub(&self, rhs: &Duration) -> Option<Timestamp>
pub fn checked_sub(&self, rhs: &Duration) -> Option<Timestamp>
Sub unsigned core::time::Duration{ secs: u64, nanos: u32 } from a Timestamp.
sourcepub fn saturating_add(&self, rhs: &Duration) -> Timestamp
pub fn saturating_add(&self, rhs: &Duration) -> Timestamp
Add a duration, clamping to MAX if overflow
sourcepub fn saturating_sub(&self, rhs: &Duration) -> Timestamp
pub fn saturating_sub(&self, rhs: &Duration) -> Timestamp
Subtract a duration, clamping to MIN if overflow
sourcepub fn into_sql_lossy(self) -> Timestamp
pub fn into_sql_lossy(self) -> Timestamp
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
sourceimpl<D> Add<D> for Timestamp where
D: Into<Duration>,
impl<D> Add<D> for Timestamp where
D: Into<Duration>,
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
sourceimpl<'arbitrary> Arbitrary<'arbitrary> for Timestamp
impl<'arbitrary> Arbitrary<'arbitrary> for Timestamp
sourcepub fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<Timestamp, Error>
pub fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<Timestamp, Error>
Generate an arbitrary value of Self
from the given unstructured data. Read more
sourcepub fn arbitrary_take_rest(
u: Unstructured<'arbitrary>
) -> Result<Timestamp, Error>
pub fn arbitrary_take_rest(
u: Unstructured<'arbitrary>
) -> Result<Timestamp, Error>
Generate an arbitrary value of Self
from the entirety of the given unstructured data. Read more
sourceimpl<'de> Deserialize<'de> for Timestamp
impl<'de> Deserialize<'de> for Timestamp
sourcepub fn deserialize<__D>(
__deserializer: __D
) -> Result<Timestamp, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<Timestamp, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl Display for Timestamp
impl Display for Timestamp
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).
sourceimpl FromSql for Timestamp
impl FromSql for Timestamp
sourcepub fn column_result(value: ValueRef<'_>) -> Result<Timestamp, FromSqlError>
pub fn column_result(value: ValueRef<'_>) -> Result<Timestamp, FromSqlError>
Converts SQLite value into Rust value.
sourceimpl Ord for Timestamp
impl Ord for Timestamp
sourceimpl PartialOrd<Timestamp> for Timestamp
impl PartialOrd<Timestamp> for Timestamp
sourcepub fn partial_cmp(&self, other: &Timestamp) -> Option<Ordering>
pub fn partial_cmp(&self, other: &Timestamp) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl Serialize for Timestamp
impl Serialize for Timestamp
sourcepub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
sourceimpl Sub<Timestamp> for Timestamp
impl Sub<Timestamp> for Timestamp
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.
impl Copy for Timestamp
impl Eq for Timestamp
impl StructuralEq for Timestamp
impl StructuralPartialEq for Timestamp
Auto Trait Implementations
impl RefUnwindSafe for Timestamp
impl Send for Timestamp
impl Sync for Timestamp
impl Unpin for Timestamp
impl UnwindSafe for Timestamp
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcepub fn equivalent(&self, key: &K) -> bool
pub fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more