pub struct Timestamp {
pub seconds: i64,
pub nanos: i32,
/* private fields */
}Fields§
§seconds: i64Field 1: seconds
nanos: i32Field 2: nanos
Implementations§
Source§impl Timestamp
impl Timestamp
Sourcepub fn from_unix(seconds: i64, nanos: i32) -> Self
pub fn from_unix(seconds: i64, nanos: i32) -> Self
Create a Timestamp from a Unix epoch offset.
seconds is the number of seconds since (or before, if negative) the
Unix epoch. nanos must be in [0, 999_999_999].
§Panics
Panics in debug mode if nanos is outside [0, 999_999_999].
In release mode the value is stored as-is, producing an invalid
timestamp. Use Timestamp::from_unix_checked for a checked
variant that returns None on invalid input.
Sourcepub fn from_unix_secs(seconds: i64) -> Self
pub fn from_unix_secs(seconds: i64) -> Self
Create a Timestamp from a whole number of Unix seconds (nanoseconds = 0).
This is a convenience shorthand for Timestamp::from_unix(seconds, 0).
Trait Implementations§
Source§impl<'arbitrary> Arbitrary<'arbitrary> for Timestamp
impl<'arbitrary> Arbitrary<'arbitrary> for Timestamp
Source§fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<Self>
fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<Self>
Self from the given unstructured data. Read moreSource§fn arbitrary_take_rest(u: Unstructured<'arbitrary>) -> Result<Self>
fn arbitrary_take_rest(u: Unstructured<'arbitrary>) -> Result<Self>
Self from the entirety of the given
unstructured data. Read moreSource§fn size_hint(depth: usize) -> (usize, Option<usize>)
fn size_hint(depth: usize) -> (usize, Option<usize>)
Unstructured this type
needs to construct itself. Read moreSource§fn try_size_hint(
depth: usize,
) -> Result<(usize, Option<usize>), MaxRecursionReached>
fn try_size_hint( depth: usize, ) -> Result<(usize, Option<usize>), MaxRecursionReached>
Unstructured this type
needs to construct itself. Read moreSource§impl DefaultInstance for Timestamp
impl DefaultInstance for Timestamp
Source§fn default_instance() -> &'static Self
fn default_instance() -> &'static Self
Source§impl<'de> Deserialize<'de> for Timestamp
Available on crate feature json only.
impl<'de> Deserialize<'de> for Timestamp
json only.Source§fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Self, D::Error>
Deserializes from an RFC 3339 string.
Source§impl From<SystemTime> for Timestamp
Available on crate feature std only.
impl From<SystemTime> for Timestamp
std only.Source§fn from(t: SystemTime) -> Self
fn from(t: SystemTime) -> Self
Convert a std::time::SystemTime to a protobuf Timestamp.
Pre-epoch times (where t < UNIX_EPOCH) are represented with a
negative seconds field and a non-negative nanos field, following
the protobuf convention that nanos is always in [0, 999_999_999].
§Saturation
Times more than ~292 billion years from the epoch (beyond i64::MAX
seconds) are saturated to i64::MAX seconds rather than wrapping,
which would produce a semantically incorrect negative timestamp.
Source§impl Message for Timestamp
impl Message for Timestamp
Source§fn compute_size(&self) -> u32
fn compute_size(&self) -> u32
Returns the total encoded size in bytes.
The result is a u32; the protobuf specification requires all
messages to fit within 2 GiB (2,147,483,647 bytes), so a
compliant message will never overflow this type.
Source§fn write_to(&self, buf: &mut impl BufMut)
fn write_to(&self, buf: &mut impl BufMut)
Source§fn merge_field(
&mut self,
tag: Tag,
buf: &mut impl Buf,
depth: u32,
) -> Result<(), DecodeError>
fn merge_field( &mut self, tag: Tag, buf: &mut impl Buf, depth: u32, ) -> Result<(), DecodeError>
buf. Read moreSource§fn cached_size(&self) -> u32
fn cached_size(&self) -> u32
compute_size() call. Read moreSource§fn encode(&self, buf: &mut impl BufMut)
fn encode(&self, buf: &mut impl BufMut)
Source§fn encode_length_delimited(&self, buf: &mut impl BufMut)
fn encode_length_delimited(&self, buf: &mut impl BufMut)
Source§fn encode_to_bytes(&self) -> Bytes
fn encode_to_bytes(&self) -> Bytes
bytes::Bytes. Read moreSource§fn decode(buf: &mut impl Buf) -> Result<Self, DecodeError>where
Self: Sized,
fn decode(buf: &mut impl Buf) -> Result<Self, DecodeError>where
Self: Sized,
Source§fn decode_from_slice(data: &[u8]) -> Result<Self, DecodeError>where
Self: Sized,
fn decode_from_slice(data: &[u8]) -> Result<Self, DecodeError>where
Self: Sized,
Source§fn decode_length_delimited(buf: &mut impl Buf) -> Result<Self, DecodeError>where
Self: Sized,
fn decode_length_delimited(buf: &mut impl Buf) -> Result<Self, DecodeError>where
Self: Sized,
Source§fn merge_to_limit(
&mut self,
buf: &mut impl Buf,
depth: u32,
limit: usize,
) -> Result<(), DecodeError>
fn merge_to_limit( &mut self, buf: &mut impl Buf, depth: u32, limit: usize, ) -> Result<(), DecodeError>
Source§fn merge_group(
&mut self,
buf: &mut impl Buf,
depth: u32,
field_number: u32,
) -> Result<(), DecodeError>
fn merge_group( &mut self, buf: &mut impl Buf, depth: u32, field_number: u32, ) -> Result<(), DecodeError>
buf, reading fields until an
EndGroup tag with the given field_number is encountered. Read moreSource§fn merge(&mut self, buf: &mut impl Buf, depth: u32) -> Result<(), DecodeError>
fn merge(&mut self, buf: &mut impl Buf, depth: u32) -> Result<(), DecodeError>
Source§fn merge_from_slice(&mut self, data: &[u8]) -> Result<(), DecodeError>
fn merge_from_slice(&mut self, data: &[u8]) -> Result<(), DecodeError>
Source§fn merge_length_delimited(
&mut self,
buf: &mut impl Buf,
depth: u32,
) -> Result<(), DecodeError>
fn merge_length_delimited( &mut self, buf: &mut impl Buf, depth: u32, ) -> Result<(), DecodeError>
Source§impl TryFrom<Timestamp> for SystemTime
Available on crate feature std only.
impl TryFrom<Timestamp> for SystemTime
std only.Source§fn try_from(ts: Timestamp) -> Result<Self, Self::Error>
fn try_from(ts: Timestamp) -> Result<Self, Self::Error>
Convert a protobuf Timestamp to a std::time::SystemTime.
§Errors
Returns TimestampError::InvalidNanos if nanos is outside
[0, 999_999_999], or TimestampError::Overflow if the result
does not fit in a std::time::SystemTime.