Struct Duration

Source
#[non_exhaustive]
pub struct Duration { /* private fields */ }
Expand description

Well-known duration representation for Google APIs.

A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like “day” or “month”. It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.

§JSON Mapping

In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix “s” (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as “3s”, while 3 seconds and 1 nanosecond should be expressed in JSON format as “3.000000001s”, and 3 seconds and 1 microsecond should be expressed in JSON format as “3.000001s”.

Implementations§

Source§

impl Duration

Source

pub const MAX_SECONDS: i64 = 315_576_000_000i64

The maximum value for the seconds component, approximately 10,000 years.

Source

pub const MIN_SECONDS: i64 = -315_576_000_000i64

The minimum value for the seconds component, approximately -10,000 years.

Source

pub const MAX_NANOS: i32 = 999_999_999i32

The maximum value for the nanos component.

Source

pub const MIN_NANOS: i32 = -999_999_999i32

The minimum value for the nanos component.

Source

pub fn new(seconds: i64, nanos: i32) -> Result<Self, DurationError>

Creates a Duration from the seconds and nanoseconds component.

This function validates the seconds and nanos components and returns an error if either are out of range or their signs do not match. Consider using clamp() to add nanoseconds to seconds with carry.

§Arguments
  • seconds - the seconds in the interval.
  • nanos - the nanoseconds added to the interval.
Source

pub fn clamp(seconds: i64, nanos: i32) -> Self

Create a normalized, clamped Duration.

Durations must be in the [-10_000, +10_000] year range, the nanoseconds field must be in the [-999_999_999, +999_999_999] range, and the seconds and nanosecond fields must have the same sign. This function creates a new Duration instance clamped to those ranges.

The function effectively adds the nanoseconds part (with carry) to the seconds part, with saturation.

§Arguments
  • seconds - the seconds in the interval.
  • nanos - the nanoseconds added to the interval.
Source

pub fn seconds(&self) -> i64

Returns the seconds part of the duration.

Source

pub fn nanos(&self) -> i32

Returns the sub-second part of the duration.

Trait Implementations§

Source§

impl Clone for Duration

Source§

fn clone(&self) -> Duration

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Duration

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Duration

Source§

fn default() -> Duration

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Duration

Implement serde deserialization for Duration.

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<&Duration> for String

Converts a Duration to its String representation.

Source§

fn from(duration: &Duration) -> String

Converts to this type from the input type.
Source§

impl Message for Duration

Source§

fn typename() -> &'static str

The typename of this message.
Source§

impl PartialEq for Duration

Source§

fn eq(&self, other: &Duration) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Duration

Source§

fn partial_cmp(&self, other: &Duration) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Serialize for Duration

Implement serde serialization for Duration.

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&str> for Duration

Converts the String representation of a duration to Duration.

Source§

type Error = DurationError

The type returned in the event of a conversion error.
Source§

fn try_from(value: &str) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<Duration> for Duration

Convert from std::time::Duration to Duration.

Source§

type Error = DurationError

The type returned in the event of a conversion error.
Source§

fn try_from(value: Duration) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<Duration> for Duration

Convert from Duration to std::time::Duration.

Source§

type Error = DurationError

The type returned in the event of a conversion error.
Source§

fn try_from(value: Duration) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl StructuralPartialEq for Duration

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,