W3cubDocs

/Rust

Struct std::time::Duration

pub struct Duration { /* fields omitted */ }

A Duration type to represent a span of time, typically used for system timeouts.

Each Duration is composed of a number of seconds and nanosecond precision. APIs binding a system timeout will typically round up the nanosecond precision if the underlying system does not support that level of precision.

Durations implement many common traits, including Add, Sub, and other ops traits.

Examples

use std::time::Duration;

let five_seconds = Duration::new(5, 0);
let five_seconds_and_five_nanos = five_seconds + Duration::new(0, 5);

assert_eq!(five_seconds_and_five_nanos.as_secs(), 5);
assert_eq!(five_seconds_and_five_nanos.subsec_nanos(), 5);

let ten_millis = Duration::from_millis(10);

Methods

impl Duration [src]

Creates a new Duration from the specified number of seconds and additional nanosecond precision.

If the nanoseconds is greater than 1 billion (the number of nanoseconds in a second), then it will carry over into the seconds provided.

Panics

This constructor will panic if the carry from the nanoseconds overflows the seconds counter.

Examples

use std::time::Duration;

let five_seconds = Duration::new(5, 0);

Creates a new Duration from the specified number of seconds.

Examples

use std::time::Duration;

let five_seconds = Duration::from_secs(5);

Creates a new Duration from the specified number of milliseconds.

Examples

use std::time::Duration;

let five_seconds = Duration::from_millis(5000);

Returns the number of whole seconds represented by this Duration.

The extra precision represented by this duration is ignored (i.e. extra nanoseconds are not represented in the returned value).

Examples

use std::time::Duration;

let five_seconds = Duration::new(5, 0);
assert_eq!(five_seconds.as_secs(), 5);

Returns the nanosecond precision represented by this Duration.

This method does not return the length of the duration when represented by nanoseconds. The returned number always represents a fractional portion of a second (i.e. it is less than one billion).

Examples

use std::time::Duration;

let duration = Duration::from_millis(5010);
assert_eq!(duration.subsec_nanos(), 10000000);

Checked Duration addition. Computes self + other, returning None if overflow occurred.

Examples

Basic usage:

use std::time::Duration;

assert_eq!(Duration::new(0, 0).checked_add(Duration::new(0, 1)), Some(Duration::new(0, 1)));
assert_eq!(Duration::new(1, 0).checked_add(Duration::new(std::u64::MAX, 0)), None);

Checked Duration subtraction. Computes self - other, returning None if the result would be negative or if underflow occurred.

Examples

Basic usage:

use std::time::Duration;

assert_eq!(Duration::new(0, 1).checked_sub(Duration::new(0, 0)), Some(Duration::new(0, 1)));
assert_eq!(Duration::new(0, 0).checked_sub(Duration::new(0, 1)), None);

Checked Duration multiplication. Computes self * other, returning None if overflow occurred.

Examples

Basic usage:

use std::time::Duration;

assert_eq!(Duration::new(0, 500_000_001).checked_mul(2), Some(Duration::new(1, 2)));
assert_eq!(Duration::new(std::u64::MAX - 1, 0).checked_mul(2), None);

Checked Duration division. Computes self / other, returning None if other == 0.

Examples

Basic usage:

use std::time::Duration;

assert_eq!(Duration::new(2, 0).checked_div(2), Some(Duration::new(1, 0)));
assert_eq!(Duration::new(1, 0).checked_div(2), Some(Duration::new(0, 500_000_000)));
assert_eq!(Duration::new(2, 0).checked_div(0), None);

Trait Implementations

impl Clone for Duration [src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Copy for Duration [src]

impl PartialEq for Duration [src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Eq for Duration [src]

impl PartialOrd for Duration [src]

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

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Ord for Duration [src]

This method returns an Ordering between self and other. Read more

impl Debug for Duration [src]

Formats the value using the given formatter.

impl Hash for Duration [src]

Feeds this value into the state given, updating the hasher as necessary.

Feeds a slice of this type into the state provided.

impl Default for Duration [src]

Returns the "default value" for a type. Read more

impl Add for Duration [src]

The resulting type after applying the + operator

The method for the + operator

impl AddAssign for Duration
1.9.0
[src]

The method for the += operator

impl Sub for Duration [src]

The resulting type after applying the - operator

The method for the - operator

impl SubAssign for Duration
1.9.0
[src]

The method for the -= operator

impl Mul<u32> for Duration [src]

The resulting type after applying the * operator

The method for the * operator

impl MulAssign<u32> for Duration
1.9.0
[src]

The method for the *= operator

impl Div<u32> for Duration [src]

The resulting type after applying the / operator

The method for the / operator

impl DivAssign<u32> for Duration
1.9.0
[src]

The method for the /= operator

impl Sum for Duration
1.16.0
[src]

Method which takes an iterator and generates Self from the elements by "summing up" the items. Read more

impl<'a> Sum<&'a Duration> for Duration
1.16.0
[src]

Method which takes an iterator and generates Self from the elements by "summing up" the items. Read more

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/time/struct.Duration.html