pub struct Timestamp {
pub seconds: i64,
pub nanos: i32,
}Expand description
A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards indefinitely.
All minutes are 60 seconds long. Leap seconds are “smeared” so that no leap second table is needed for interpretation, using a 24-hour linear smear.
The range from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z may be converted to and
from RFC 3339 date strings via the Display and
FromStr traits. Dates before and after those years are extended further, still in the
proleptic Gregorian calendar, in negative years or in positive years with more than 4 digits.
Values of this type are not guaranteed to only exist in their normalized form.
Fields§
§seconds: i64Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z.
nanos: i32Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive.
Implementations§
Source§impl Timestamp
impl Timestamp
Sourcepub fn is_canonical(&self) -> bool
pub fn is_canonical(&self) -> bool
Returns true iff the timestamp is already normalized.
Sourcepub fn normalize(&mut self)
pub fn normalize(&mut self)
Normalizes the timestamp to a canonical format.
Based on google::protobuf::util::CreateNormalized.
Sourcepub fn try_normalize(self) -> Result<Timestamp, Timestamp>
pub fn try_normalize(self) -> Result<Timestamp, Timestamp>
Normalizes the timestamp to a canonical format, returning the original value if it cannot be normalized.
Normalization is based on google::protobuf::util::CreateNormalized.
Sourcepub fn date(year: i64, month: u8, day: u8) -> Result<Timestamp, TimestampError>
pub fn date(year: i64, month: u8, day: u8) -> Result<Timestamp, TimestampError>
Creates a new Timestamp at the start of the provided UTC date.
Trait Implementations§
Source§impl ForOverwrite<(), Timestamp> for ()
impl ForOverwrite<(), Timestamp> for ()
Source§fn for_overwrite() -> __Self
fn for_overwrite() -> __Self
Self value to be overwritten.Source§impl From<SystemTime> for Timestamp
impl From<SystemTime> for Timestamp
Source§fn from(system_time: SystemTime) -> Timestamp
fn from(system_time: SystemTime) -> Timestamp
Source§impl PartialOrd for Timestamp
impl PartialOrd for Timestamp
Source§impl<'__a> RawDistinguishedMessageBorrowDecoder<'__a> for __Selfwhere
(): DistinguishedBorrowDecoder<'__a, fixed, i32> + DistinguishedBorrowDecoder<'__a, general, i64> + EmptyState<fixed, i32> + EmptyState<general, i64>,
Self: Eq,
impl<'__a> RawDistinguishedMessageBorrowDecoder<'__a> for __Selfwhere
(): DistinguishedBorrowDecoder<'__a, fixed, i32> + DistinguishedBorrowDecoder<'__a, general, i64> + EmptyState<fixed, i32> + EmptyState<general, i64>,
Self: Eq,
fn raw_borrow_decode_field_distinguished( &mut self, tag: u32, wire_type: WireType, duplicated: bool, buf: Capped<'_, &'__a [u8]>, ctx: RestrictedDecodeContext, ) -> Result<Canonicity, DecodeError>
Source§impl RawDistinguishedMessageDecoder for __Selfwhere
(): DistinguishedDecoder<fixed, i32> + DistinguishedDecoder<general, i64> + EmptyState<fixed, i32> + EmptyState<general, i64>,
Self: Eq,
impl RawDistinguishedMessageDecoder for __Selfwhere
(): DistinguishedDecoder<fixed, i32> + DistinguishedDecoder<general, i64> + EmptyState<fixed, i32> + EmptyState<general, i64>,
Self: Eq,
fn raw_decode_field_distinguished<__B>( &mut self, tag: u32, wire_type: WireType, duplicated: bool, buf: Capped<'_, __B>, ctx: RestrictedDecodeContext, ) -> Result<Canonicity, DecodeError>
Source§impl RawMessage for __Self
impl RawMessage for __Self
const __ASSERTIONS: ()
Source§fn raw_encode<__B>(&self, buf: &mut __B)
fn raw_encode<__B>(&self, buf: &mut __B)
Source§fn raw_prepend<__B>(&self, buf: &mut __B)where
__B: ReverseBuf + ?Sized,
fn raw_prepend<__B>(&self, buf: &mut __B)where
__B: ReverseBuf + ?Sized,
Source§fn raw_encoded_len(&self) -> usize
fn raw_encoded_len(&self) -> usize
Source§impl<'__a> RawMessageBorrowDecoder<'__a> for __Selfwhere
(): BorrowDecoder<'__a, fixed, i32> + BorrowDecoder<'__a, general, i64> + EmptyState<fixed, i32> + EmptyState<general, i64>,
impl<'__a> RawMessageBorrowDecoder<'__a> for __Selfwhere
(): BorrowDecoder<'__a, fixed, i32> + BorrowDecoder<'__a, general, i64> + EmptyState<fixed, i32> + EmptyState<general, i64>,
Source§fn raw_borrow_decode_field(
&mut self,
tag: u32,
wire_type: WireType,
duplicated: bool,
buf: Capped<'_, &'__a [u8]>,
ctx: DecodeContext,
) -> Result<(), DecodeError>
fn raw_borrow_decode_field( &mut self, tag: u32, wire_type: WireType, duplicated: bool, buf: Capped<'_, &'__a [u8]>, ctx: DecodeContext, ) -> Result<(), DecodeError>
self from a borrowed slice.Source§impl RawMessageDecoder for __Self
impl RawMessageDecoder for __Self
Source§fn raw_decode_field<__B>(
&mut self,
tag: u32,
wire_type: WireType,
duplicated: bool,
buf: Capped<'_, __B>,
ctx: DecodeContext,
) -> Result<(), DecodeError>
fn raw_decode_field<__B>( &mut self, tag: u32, wire_type: WireType, duplicated: bool, buf: Capped<'_, __B>, ctx: DecodeContext, ) -> Result<(), DecodeError>
self.Source§impl TryFrom<Timestamp> for SystemTime
impl TryFrom<Timestamp> for SystemTime
impl Eq for Timestamp
impl StructuralPartialEq for Timestamp
Auto Trait Implementations§
impl Freeze for Timestamp
impl RefUnwindSafe for Timestamp
impl Send for Timestamp
impl Sync for Timestamp
impl Unpin for Timestamp
impl UnwindSafe for Timestamp
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<'a, T> BorrowedMessage<'a> for Twhere
T: RawMessageBorrowDecoder<'a>,
impl<'a, T> BorrowedMessage<'a> for Twhere
T: RawMessageBorrowDecoder<'a>,
Source§fn decode_borrowed(buf: &'a [u8]) -> Result<T, DecodeError>
fn decode_borrowed(buf: &'a [u8]) -> Result<T, DecodeError>
Source§fn decode_borrowed_length_delimited(
buf: &mut &'a [u8],
) -> Result<T, DecodeError>
fn decode_borrowed_length_delimited( buf: &mut &'a [u8], ) -> Result<T, DecodeError>
Source§fn replace_borrowed_from(&mut self, buf: &'a [u8]) -> Result<(), DecodeError>
fn replace_borrowed_from(&mut self, buf: &'a [u8]) -> Result<(), DecodeError>
Source§fn replace_borrowed_from_length_delimited(
&mut self,
buf: &mut &'a [u8],
) -> Result<(), DecodeError>
fn replace_borrowed_from_length_delimited( &mut self, buf: &mut &'a [u8], ) -> Result<(), DecodeError>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<'a, T> DistinguishedBorrowedMessage<'a> for Twhere
T: RawDistinguishedMessageBorrowDecoder<'a> + RawMessageBorrowDecoder<'a>,
impl<'a, T> DistinguishedBorrowedMessage<'a> for Twhere
T: RawDistinguishedMessageBorrowDecoder<'a> + RawMessageBorrowDecoder<'a>,
Source§fn decode_distinguished_borrowed(
buf: &'a [u8],
) -> Result<(T, Canonicity), DecodeError>
fn decode_distinguished_borrowed( buf: &'a [u8], ) -> Result<(T, Canonicity), DecodeError>
Source§fn decode_distinguished_borrowed_length_delimited(
buf: &mut &'a [u8],
) -> Result<(T, Canonicity), DecodeError>
fn decode_distinguished_borrowed_length_delimited( buf: &mut &'a [u8], ) -> Result<(T, Canonicity), DecodeError>
Source§fn replace_distinguished_borrowed_from(
&mut self,
buf: &'a [u8],
) -> Result<Canonicity, DecodeError>
fn replace_distinguished_borrowed_from( &mut self, buf: &'a [u8], ) -> Result<Canonicity, DecodeError>
Source§fn replace_distinguished_borrowed_from_length_delimited(
&mut self,
buf: &mut &'a [u8],
) -> Result<Canonicity, DecodeError>
fn replace_distinguished_borrowed_from_length_delimited( &mut self, buf: &mut &'a [u8], ) -> Result<Canonicity, DecodeError>
Source§fn decode_restricted_borrowed(
buf: &'a [u8],
restrict_to: Canonicity,
) -> Result<(T, Canonicity), DecodeError>
fn decode_restricted_borrowed( buf: &'a [u8], restrict_to: Canonicity, ) -> Result<(T, Canonicity), DecodeError>
Source§fn decode_restricted_borrowed_length_delimited(
buf: &mut &'a [u8],
restrict_to: Canonicity,
) -> Result<(T, Canonicity), DecodeError>
fn decode_restricted_borrowed_length_delimited( buf: &mut &'a [u8], restrict_to: Canonicity, ) -> Result<(T, Canonicity), DecodeError>
Source§fn replace_restricted_borrowed_from(
&mut self,
buf: &'a [u8],
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>
fn replace_restricted_borrowed_from( &mut self, buf: &'a [u8], restrict_to: Canonicity, ) -> Result<Canonicity, DecodeError>
Source§fn replace_restricted_borrowed_from_length_delimited(
&mut self,
buf: &mut &'a [u8],
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>
fn replace_restricted_borrowed_from_length_delimited( &mut self, buf: &mut &'a [u8], restrict_to: Canonicity, ) -> Result<Canonicity, DecodeError>
Source§fn decode_canonical_borrowed(buf: &'a [u8]) -> Result<T, DecodeError>
fn decode_canonical_borrowed(buf: &'a [u8]) -> Result<T, DecodeError>
Source§fn decode_canonical_borrowed_length_delimited(
buf: &mut &'a [u8],
) -> Result<T, DecodeError>
fn decode_canonical_borrowed_length_delimited( buf: &mut &'a [u8], ) -> Result<T, DecodeError>
Source§fn replace_canonical_borrowed_from(
&mut self,
buf: &'a [u8],
) -> Result<(), DecodeError>
fn replace_canonical_borrowed_from( &mut self, buf: &'a [u8], ) -> Result<(), DecodeError>
Source§fn replace_canonical_borrowed_from_length_delimited(
&mut self,
buf: &mut &'a [u8],
) -> Result<(), DecodeError>
fn replace_canonical_borrowed_from_length_delimited( &mut self, buf: &mut &'a [u8], ) -> Result<(), DecodeError>
Source§impl<T> DistinguishedOwnedMessage for Twhere
T: RawDistinguishedMessageDecoder + RawMessageDecoder,
impl<T> DistinguishedOwnedMessage for Twhere
T: RawDistinguishedMessageDecoder + RawMessageDecoder,
Source§fn decode_distinguished<B>(buf: B) -> Result<(T, Canonicity), DecodeError>where
B: Buf,
fn decode_distinguished<B>(buf: B) -> Result<(T, Canonicity), DecodeError>where
B: Buf,
Source§fn decode_distinguished_length_delimited<B>(
buf: B,
) -> Result<(T, Canonicity), DecodeError>where
B: Buf,
fn decode_distinguished_length_delimited<B>(
buf: B,
) -> Result<(T, Canonicity), DecodeError>where
B: Buf,
Source§fn replace_distinguished_from<B>(
&mut self,
buf: B,
) -> Result<Canonicity, DecodeError>where
B: Buf,
fn replace_distinguished_from<B>(
&mut self,
buf: B,
) -> Result<Canonicity, DecodeError>where
B: Buf,
Source§fn replace_distinguished_from_length_delimited<B>(
&mut self,
buf: B,
) -> Result<Canonicity, DecodeError>where
B: Buf,
fn replace_distinguished_from_length_delimited<B>(
&mut self,
buf: B,
) -> Result<Canonicity, DecodeError>where
B: Buf,
Source§fn replace_distinguished_from_slice(
&mut self,
buf: &[u8],
) -> Result<Canonicity, DecodeError>
fn replace_distinguished_from_slice( &mut self, buf: &[u8], ) -> Result<Canonicity, DecodeError>
Source§fn replace_distinguished_from_dyn(
&mut self,
buf: &mut dyn Buf,
) -> Result<Canonicity, DecodeError>
fn replace_distinguished_from_dyn( &mut self, buf: &mut dyn Buf, ) -> Result<Canonicity, DecodeError>
Source§fn replace_distinguished_from_length_delimited_slice(
&mut self,
buf: &[u8],
) -> Result<Canonicity, DecodeError>
fn replace_distinguished_from_length_delimited_slice( &mut self, buf: &[u8], ) -> Result<Canonicity, DecodeError>
Source§fn replace_distinguished_from_length_delimited_dyn(
&mut self,
buf: &mut dyn Buf,
) -> Result<Canonicity, DecodeError>
fn replace_distinguished_from_length_delimited_dyn( &mut self, buf: &mut dyn Buf, ) -> Result<Canonicity, DecodeError>
Source§fn decode_restricted<B>(
buf: B,
restrict_to: Canonicity,
) -> Result<(T, Canonicity), DecodeError>where
B: Buf,
fn decode_restricted<B>(
buf: B,
restrict_to: Canonicity,
) -> Result<(T, Canonicity), DecodeError>where
B: Buf,
Source§fn decode_restricted_length_delimited<B>(
buf: B,
restrict_to: Canonicity,
) -> Result<(T, Canonicity), DecodeError>where
B: Buf,
fn decode_restricted_length_delimited<B>(
buf: B,
restrict_to: Canonicity,
) -> Result<(T, Canonicity), DecodeError>where
B: Buf,
fn decode_restricted_capped<B>( buf: Capped<'_, B>, restrict_to: Canonicity, ) -> Result<(T, Canonicity), DecodeError>
Source§fn replace_restricted_from<B>(
&mut self,
buf: B,
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>where
B: Buf,
fn replace_restricted_from<B>(
&mut self,
buf: B,
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>where
B: Buf,
Source§fn replace_restricted_from_length_delimited<B>(
&mut self,
buf: B,
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>where
B: Buf,
fn replace_restricted_from_length_delimited<B>(
&mut self,
buf: B,
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>where
B: Buf,
fn replace_restricted_from_capped<B>( &mut self, buf: Capped<'_, B>, restrict_to: Canonicity, ) -> Result<Canonicity, DecodeError>
Source§fn replace_restricted_from_slice(
&mut self,
buf: &[u8],
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>
fn replace_restricted_from_slice( &mut self, buf: &[u8], restrict_to: Canonicity, ) -> Result<Canonicity, DecodeError>
Source§fn replace_restricted_from_dyn(
&mut self,
buf: &mut dyn Buf,
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>
fn replace_restricted_from_dyn( &mut self, buf: &mut dyn Buf, restrict_to: Canonicity, ) -> Result<Canonicity, DecodeError>
Source§fn replace_restricted_from_length_delimited_slice(
&mut self,
buf: &[u8],
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>
fn replace_restricted_from_length_delimited_slice( &mut self, buf: &[u8], restrict_to: Canonicity, ) -> Result<Canonicity, DecodeError>
Source§fn replace_restricted_from_length_delimited_dyn(
&mut self,
buf: &mut dyn Buf,
restrict_to: Canonicity,
) -> Result<Canonicity, DecodeError>
fn replace_restricted_from_length_delimited_dyn( &mut self, buf: &mut dyn Buf, restrict_to: Canonicity, ) -> Result<Canonicity, DecodeError>
fn replace_restricted_from_capped_dyn( &mut self, buf: Capped<'_, dyn Buf>, restrict_to: Canonicity, ) -> Result<Canonicity, DecodeError>
Source§fn decode_canonical<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
fn decode_canonical<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
Source§fn decode_canonical_length_delimited<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
fn decode_canonical_length_delimited<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
Source§fn replace_canonical_from<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
fn replace_canonical_from<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Source§fn replace_canonical_from_length_delimited<B>(
&mut self,
buf: B,
) -> Result<(), DecodeError>where
B: Buf,
fn replace_canonical_from_length_delimited<B>(
&mut self,
buf: B,
) -> Result<(), DecodeError>where
B: Buf,
Source§fn replace_canonical_from_slice(
&mut self,
buf: &[u8],
) -> Result<(), DecodeError>
fn replace_canonical_from_slice( &mut self, buf: &[u8], ) -> Result<(), DecodeError>
Source§fn replace_canonical_from_dyn(
&mut self,
buf: &mut dyn Buf,
) -> Result<(), DecodeError>
fn replace_canonical_from_dyn( &mut self, buf: &mut dyn Buf, ) -> Result<(), DecodeError>
Source§fn replace_canonical_from_length_delimited_slice(
&mut self,
buf: &[u8],
) -> Result<(), DecodeError>
fn replace_canonical_from_length_delimited_slice( &mut self, buf: &[u8], ) -> Result<(), DecodeError>
Source§fn replace_canonical_from_length_delimited_dyn(
&mut self,
buf: &mut dyn Buf,
) -> Result<(), DecodeError>
fn replace_canonical_from_length_delimited_dyn( &mut self, buf: &mut dyn Buf, ) -> Result<(), DecodeError>
Source§impl<T> Message for Twhere
T: RawMessage,
impl<T> Message for Twhere
T: RawMessage,
Source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn prepend<B>(&self, buf: &mut B)where
B: ReverseBuf + ?Sized,
fn prepend<B>(&self, buf: &mut B)where
B: ReverseBuf + ?Sized,
Source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn message_is_empty(&self) -> bool
fn message_is_empty(&self) -> bool
Source§fn clear_message(&mut self)
fn clear_message(&mut self)
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode_to_bytes(&self) -> Bytes
fn encode_to_bytes(&self) -> Bytes
Bytes buffer.Source§fn encode_fast(&self) -> ReverseBuffer
fn encode_fast(&self) -> ReverseBuffer
ReverseBuffer.Source§fn encode_length_delimited_fast(&self) -> ReverseBuffer
fn encode_length_delimited_fast(&self) -> ReverseBuffer
ReverseBuffer.Source§fn encode_contiguous(&self) -> ReverseBuffer
fn encode_contiguous(&self) -> ReverseBuffer
RevserseBuffer which will have exactly the required capacity
in one contiguous slice.Source§fn encode_length_delimited_contiguous(&self) -> ReverseBuffer
fn encode_length_delimited_contiguous(&self) -> ReverseBuffer
RevserseBuffer which will have
exactly the required capacity in one contiguous slice.Source§fn encode_dyn(&self, buf: &mut dyn BufMut) -> Result<(), EncodeError>
fn encode_dyn(&self, buf: &mut dyn BufMut) -> Result<(), EncodeError>
Bytes buffer.Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘ
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘ
Source§fn encode_length_delimited_to_bytes(&self) -> Bytes
fn encode_length_delimited_to_bytes(&self) -> Bytes
Bytes buffer.Source§fn encode_length_delimited_dyn(
&self,
buf: &mut dyn BufMut,
) -> Result<(), EncodeError>
fn encode_length_delimited_dyn( &self, buf: &mut dyn BufMut, ) -> Result<(), EncodeError>
Bytes buffer.