Struct bonsaidb_core::key::time::limited::LimitedResolutionTimestamp
source · [−]pub struct LimitedResolutionTimestamp<Resolution: TimeResolution, Epoch: TimeEpoch>(_, _);Expand description
A timestamp (moment in time) stored with a limited Resolution. This
type may be preferred to std::time::SystemTime because SystemTime
serializes with nanosecond resolution. Often this level of precision is
not needed and less storage and memory can be used.
This type stores the representation of the timestamp as a
LimitedResolutionDuration relative to Epoch.
The Resolution type controls the storage size. The resolutions
provided by BonsaiDb:
Other resolutions can be used by implementing TimeResolution.
BonsaiDb provides two TimeEpoch implementations:
Implementations
sourceimpl<Resolution, Epoch> LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourcepub fn now() -> Self
pub fn now() -> Self
Returns SystemTime::now() limited to Resolution. The timestamp
will be truncated, not rounded.
sourcepub fn duration_since_unix_epoch(&self) -> Result<Duration, TimeError>
pub fn duration_since_unix_epoch(&self) -> Result<Duration, TimeError>
Returns the Duration since January 1, 1970 00:00:00 UTC for this
timestamp.
sourcepub fn to_timestamp_string(&self) -> Result<String, TimeError>
pub fn to_timestamp_string(&self) -> Result<String, TimeError>
Converts this value to a a decimal string containing the number of seconds since the unix epoch (January 1, 1970 00:00:00 UTC).
The resulting string can be parsed as well.
use bonsaidb_core::key::time::limited::{
BonsaiEpoch, LimitedResolutionTimestamp, Milliseconds,
};
let now = LimitedResolutionTimestamp::<Milliseconds, BonsaiEpoch>::now();
let timestamp = now.to_timestamp_string().unwrap();
let parsed = timestamp.parse().unwrap();
assert_eq!(now, parsed);The difference between this function and to_string()] is that
to_string() will revert to using the underlying
LimitedResolutionDuration’s to_string() if a value is unable
to be converted to a value relative to the unix epoch.
Trait Implementations
sourceimpl<Resolution: TimeResolution, Epoch: TimeEpoch> Clone for LimitedResolutionTimestamp<Resolution, Epoch>
impl<Resolution: TimeResolution, Epoch: TimeEpoch> Clone for LimitedResolutionTimestamp<Resolution, Epoch>
sourceimpl<Resolution, Epoch> Debug for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> Debug for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourceimpl<Resolution, Epoch> Default for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> Default for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourceimpl<'de, Resolution, Epoch> Deserialize<'de> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<'de, Resolution, Epoch> Deserialize<'de> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourcefn 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
sourceimpl<Resolution, Epoch> Display for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> Display for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourceimpl<Resolution, Epoch> From<LimitedResolutionDuration<Resolution>> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> From<LimitedResolutionDuration<Resolution>> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourcefn from(duration: LimitedResolutionDuration<Resolution>) -> Self
fn from(duration: LimitedResolutionDuration<Resolution>) -> Self
Converts to this type from the input type.
sourceimpl<Resolution, Epoch> From<LimitedResolutionTimestamp<Resolution, Epoch>> for LimitedResolutionDuration<Resolution> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> From<LimitedResolutionTimestamp<Resolution, Epoch>> for LimitedResolutionDuration<Resolution> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourcefn from(time: LimitedResolutionTimestamp<Resolution, Epoch>) -> Self
fn from(time: LimitedResolutionTimestamp<Resolution, Epoch>) -> Self
Converts to this type from the input type.
sourceimpl<Resolution, Epoch> FromStr for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> FromStr for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourceimpl<'a, Resolution, Epoch> Key<'a> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<'a, Resolution, Epoch> Key<'a> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourcefn from_ord_bytes(bytes: &'a [u8]) -> Result<Self, Self::Error>
fn from_ord_bytes(bytes: &'a [u8]) -> Result<Self, Self::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes. Read more
sourcefn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types implement this. Read more
sourcefn next_value(&self) -> Result<Self, NextValueError>
fn next_value(&self) -> Result<Self, NextValueError>
Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned. Read more
sourceimpl<'a, Resolution, Epoch> KeyEncoding<'a, LimitedResolutionTimestamp<Resolution, Epoch>> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<'a, Resolution, Epoch> KeyEncoding<'a, LimitedResolutionTimestamp<Resolution, Epoch>> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourceimpl<Resolution: TimeResolution, Epoch: TimeEpoch> Ord for LimitedResolutionTimestamp<Resolution, Epoch>
impl<Resolution: TimeResolution, Epoch: TimeEpoch> Ord for LimitedResolutionTimestamp<Resolution, Epoch>
sourceimpl<Resolution: TimeResolution, Epoch: TimeEpoch> PartialEq<LimitedResolutionTimestamp<Resolution, Epoch>> for LimitedResolutionTimestamp<Resolution, Epoch>
impl<Resolution: TimeResolution, Epoch: TimeEpoch> PartialEq<LimitedResolutionTimestamp<Resolution, Epoch>> for LimitedResolutionTimestamp<Resolution, Epoch>
sourceimpl<Resolution: TimeResolution, Epoch: TimeEpoch> PartialOrd<LimitedResolutionTimestamp<Resolution, Epoch>> for LimitedResolutionTimestamp<Resolution, Epoch>
impl<Resolution: TimeResolution, Epoch: TimeEpoch> PartialOrd<LimitedResolutionTimestamp<Resolution, Epoch>> for LimitedResolutionTimestamp<Resolution, Epoch>
sourcefn partial_cmp(&self, __other: &Self) -> Option<Ordering>
fn partial_cmp(&self, __other: &Self) -> 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<Resolution, Epoch> Serialize for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> Serialize for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourceimpl<Resolution, Epoch> TryFrom<LimitedResolutionTimestamp<Resolution, Epoch>> for SystemTime where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> TryFrom<LimitedResolutionTimestamp<Resolution, Epoch>> for SystemTime where
Resolution: TimeResolution,
Epoch: TimeEpoch,
sourceimpl<Resolution, Epoch> TryFrom<SystemTime> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution, Epoch> TryFrom<SystemTime> for LimitedResolutionTimestamp<Resolution, Epoch> where
Resolution: TimeResolution,
Epoch: TimeEpoch,
impl<Resolution: TimeResolution, Epoch: TimeEpoch> Copy for LimitedResolutionTimestamp<Resolution, Epoch>
impl<Resolution: TimeResolution, Epoch: TimeEpoch> Eq for LimitedResolutionTimestamp<Resolution, Epoch>
Auto Trait Implementations
impl<Resolution, Epoch> RefUnwindSafe for LimitedResolutionTimestamp<Resolution, Epoch> where
Epoch: RefUnwindSafe,
Resolution: RefUnwindSafe,
<Resolution as TimeResolution>::Representation: RefUnwindSafe,
impl<Resolution, Epoch> Send for LimitedResolutionTimestamp<Resolution, Epoch>
impl<Resolution, Epoch> Sync for LimitedResolutionTimestamp<Resolution, Epoch>
impl<Resolution, Epoch> Unpin for LimitedResolutionTimestamp<Resolution, Epoch> where
Epoch: Unpin,
Resolution: Unpin,
<Resolution as TimeResolution>::Representation: Unpin,
impl<Resolution, Epoch> UnwindSafe for LimitedResolutionTimestamp<Resolution, Epoch> where
Epoch: UnwindSafe,
Resolution: UnwindSafe,
<Resolution as TimeResolution>::Representation: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
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.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more