pub struct Duration { /* private fields */ }
Expand description
๐
core
A span of time, with u64
seconds and u32
nanoseconds.
Re-exported from core
::time::
.
A Duration
type to represent a span of time, typically used for system
timeouts.
Each Duration
is composed of a whole number of seconds and a fractional part
represented in nanoseconds. If the underlying system does not support
nanosecond-level precision, APIs binding a system timeout will typically round up
the number of nanoseconds.
Duration
s implement many common traits, including Add
, Sub
, and other
ops
traits. It implements Default
by returning a zero-length Duration
.
ยง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);
ยงFormatting Duration
values
Duration
intentionally does not have a Display
impl, as there are a
variety of ways to format spans of time for human readability. Duration
provides a Debug
impl that shows the full precision of the value.
The Debug
output uses the non-ASCII โยตsโ suffix for microseconds. If your
program output may appear in contexts that cannot rely on full Unicode
compatibility, you may wish to format Duration
objects yourself or use a
crate to do so.
Implementationsยง
Sourceยงimpl Duration
impl Duration
Sourcepub const SECOND: Duration
๐ฌThis is a nightly-only experimental API. (duration_constants
)
pub const SECOND: Duration
duration_constants
)The duration of one second.
ยงExamples
#![feature(duration_constants)]
use std::time::Duration;
assert_eq!(Duration::SECOND, Duration::from_secs(1));
Sourcepub const MILLISECOND: Duration
๐ฌThis is a nightly-only experimental API. (duration_constants
)
pub const MILLISECOND: Duration
duration_constants
)The duration of one millisecond.
ยงExamples
#![feature(duration_constants)]
use std::time::Duration;
assert_eq!(Duration::MILLISECOND, Duration::from_millis(1));
Sourcepub const MICROSECOND: Duration
๐ฌThis is a nightly-only experimental API. (duration_constants
)
pub const MICROSECOND: Duration
duration_constants
)The duration of one microsecond.
ยงExamples
#![feature(duration_constants)]
use std::time::Duration;
assert_eq!(Duration::MICROSECOND, Duration::from_micros(1));
Sourcepub const NANOSECOND: Duration
๐ฌThis is a nightly-only experimental API. (duration_constants
)
pub const NANOSECOND: Duration
duration_constants
)The duration of one nanosecond.
ยงExamples
#![feature(duration_constants)]
use std::time::Duration;
assert_eq!(Duration::NANOSECOND, Duration::from_nanos(1));
1.53.0 ยท Sourcepub const ZERO: Duration
pub const ZERO: Duration
A duration of zero time.
ยงExamples
use std::time::Duration;
let duration = Duration::ZERO;
assert!(duration.is_zero());
assert_eq!(duration.as_nanos(), 0);
1.53.0 ยท Sourcepub const MAX: Duration
pub const MAX: Duration
The maximum duration.
May vary by platform as necessary. Must be able to contain the difference between
two instances of Instant
or two instances of SystemTime
.
This constraint gives it a value of about 584,942,417,355 years in practice,
which is currently used on all platforms.
ยงExamples
use std::time::Duration;
assert_eq!(Duration::MAX, Duration::new(u64::MAX, 1_000_000_000 - 1));
1.3.0 (const: 1.58.0) ยท Sourcepub const fn new(secs: u64, nanos: u32) -> Duration
pub const fn new(secs: u64, nanos: u32) -> Duration
Creates a new Duration
from the specified number of whole seconds and
additional nanoseconds.
If the number of 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);
1.3.0 (const: 1.32.0) ยท Sourcepub const fn from_secs(secs: u64) -> Duration
pub const fn from_secs(secs: u64) -> Duration
Creates a new Duration
from the specified number of whole seconds.
ยงExamples
use std::time::Duration;
let duration = Duration::from_secs(5);
assert_eq!(5, duration.as_secs());
assert_eq!(0, duration.subsec_nanos());
1.3.0 (const: 1.32.0) ยท Sourcepub const fn from_millis(millis: u64) -> Duration
pub const fn from_millis(millis: u64) -> Duration
Creates a new Duration
from the specified number of milliseconds.
ยงExamples
use std::time::Duration;
let duration = Duration::from_millis(2_569);
assert_eq!(2, duration.as_secs());
assert_eq!(569_000_000, duration.subsec_nanos());
1.27.0 (const: 1.32.0) ยท Sourcepub const fn from_micros(micros: u64) -> Duration
pub const fn from_micros(micros: u64) -> Duration
Creates a new Duration
from the specified number of microseconds.
ยงExamples
use std::time::Duration;
let duration = Duration::from_micros(1_000_002);
assert_eq!(1, duration.as_secs());
assert_eq!(2_000, duration.subsec_nanos());
1.27.0 (const: 1.32.0) ยท Sourcepub const fn from_nanos(nanos: u64) -> Duration
pub const fn from_nanos(nanos: u64) -> Duration
Creates a new Duration
from the specified number of nanoseconds.
Note: Using this on the return value of as_nanos()
might cause unexpected behavior:
as_nanos()
returns a u128, and can return values that do not fit in u64, e.g. 585 years.
Instead, consider using the pattern Duration::new(d.as_secs(), d.subsec_nanos())
if you cannot copy/clone the Duration directly.
ยงExamples
use std::time::Duration;
let duration = Duration::from_nanos(1_000_000_123);
assert_eq!(1, duration.as_secs());
assert_eq!(123, duration.subsec_nanos());
Sourcepub const fn from_nanos_u128(nanos: u128) -> Duration
๐ฌThis is a nightly-only experimental API. (duration_from_nanos_u128
)
pub const fn from_nanos_u128(nanos: u128) -> Duration
duration_from_nanos_u128
)Creates a new Duration
from the specified number of nanoseconds.
ยงPanics
Panics if the given number of nanoseconds is greater than Duration::MAX
.
ยงExamples
#![feature(duration_from_nanos_u128)]
use std::time::Duration;
let nanos = 10_u128.pow(24) + 321;
let duration = Duration::from_nanos_u128(nanos);
assert_eq!(10_u64.pow(15), duration.as_secs());
assert_eq!(321, duration.subsec_nanos());
Sourcepub const fn from_weeks(weeks: u64) -> Duration
๐ฌThis is a nightly-only experimental API. (duration_constructors
)
pub const fn from_weeks(weeks: u64) -> Duration
duration_constructors
)Creates a new Duration
from the specified number of weeks.
ยงPanics
Panics if the given number of weeks overflows the Duration
size.
ยงExamples
#![feature(duration_constructors)]
use std::time::Duration;
let duration = Duration::from_weeks(4);
assert_eq!(4 * 7 * 24 * 60 * 60, duration.as_secs());
assert_eq!(0, duration.subsec_nanos());
Sourcepub const fn from_days(days: u64) -> Duration
๐ฌThis is a nightly-only experimental API. (duration_constructors
)
pub const fn from_days(days: u64) -> Duration
duration_constructors
)Creates a new Duration
from the specified number of days.
ยงPanics
Panics if the given number of days overflows the Duration
size.
ยงExamples
#![feature(duration_constructors)]
use std::time::Duration;
let duration = Duration::from_days(7);
assert_eq!(7 * 24 * 60 * 60, duration.as_secs());
assert_eq!(0, duration.subsec_nanos());
1.91.0 (const: 1.91.0) ยท Sourcepub const fn from_hours(hours: u64) -> Duration
pub const fn from_hours(hours: u64) -> Duration
1.53.0 (const: 1.53.0) ยท Sourcepub const fn is_zero(&self) -> bool
pub const fn is_zero(&self) -> bool
Returns true if this Duration
spans no time.
ยงExamples
use std::time::Duration;
assert!(Duration::ZERO.is_zero());
assert!(Duration::new(0, 0).is_zero());
assert!(Duration::from_nanos(0).is_zero());
assert!(Duration::from_secs(0).is_zero());
assert!(!Duration::new(1, 1).is_zero());
assert!(!Duration::from_nanos(1).is_zero());
assert!(!Duration::from_secs(1).is_zero());
1.3.0 (const: 1.32.0) ยท Sourcepub const fn as_secs(&self) -> u64 โ
pub const fn as_secs(&self) -> u64 โ
Returns the number of whole seconds contained by this Duration
.
The returned value does not include the fractional (nanosecond) part of the
duration, which can be obtained using subsec_nanos
.
ยงExamples
use std::time::Duration;
let duration = Duration::new(5, 730_023_852);
assert_eq!(duration.as_secs(), 5);
To determine the total number of seconds represented by the Duration
including the fractional part, use as_secs_f64
or as_secs_f32
1.27.0 (const: 1.32.0) ยท Sourcepub const fn subsec_millis(&self) -> u32 โ
pub const fn subsec_millis(&self) -> u32 โ
Returns the fractional part of this Duration
, in whole milliseconds.
This method does not return the length of the duration when represented by milliseconds. The returned number always represents a fractional portion of a second (i.e., it is less than one thousand).
ยงExamples
use std::time::Duration;
let duration = Duration::from_millis(5_432);
assert_eq!(duration.as_secs(), 5);
assert_eq!(duration.subsec_millis(), 432);
1.27.0 (const: 1.32.0) ยท Sourcepub const fn subsec_micros(&self) -> u32 โ
pub const fn subsec_micros(&self) -> u32 โ
Returns the fractional part of this Duration
, in whole microseconds.
This method does not return the length of the duration when represented by microseconds. The returned number always represents a fractional portion of a second (i.e., it is less than one million).
ยงExamples
use std::time::Duration;
let duration = Duration::from_micros(1_234_567);
assert_eq!(duration.as_secs(), 1);
assert_eq!(duration.subsec_micros(), 234_567);
1.3.0 (const: 1.32.0) ยท Sourcepub const fn subsec_nanos(&self) -> u32 โ
pub const fn subsec_nanos(&self) -> u32 โ
Returns the fractional part of this Duration
, in nanoseconds.
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(5_010);
assert_eq!(duration.as_secs(), 5);
assert_eq!(duration.subsec_nanos(), 10_000_000);
1.33.0 (const: 1.33.0) ยท Sourcepub const fn as_millis(&self) -> u128 โ
pub const fn as_millis(&self) -> u128 โ
Returns the total number of whole milliseconds contained by this Duration
.
ยงExamples
use std::time::Duration;
let duration = Duration::new(5, 730_023_852);
assert_eq!(duration.as_millis(), 5_730);
1.33.0 (const: 1.33.0) ยท Sourcepub const fn as_micros(&self) -> u128 โ
pub const fn as_micros(&self) -> u128 โ
Returns the total number of whole microseconds contained by this Duration
.
ยงExamples
use std::time::Duration;
let duration = Duration::new(5, 730_023_852);
assert_eq!(duration.as_micros(), 5_730_023);
1.33.0 (const: 1.33.0) ยท Sourcepub const fn as_nanos(&self) -> u128 โ
pub const fn as_nanos(&self) -> u128 โ
Returns the total number of nanoseconds contained by this Duration
.
ยงExamples
use std::time::Duration;
let duration = Duration::new(5, 730_023_852);
assert_eq!(duration.as_nanos(), 5_730_023_852);
1.81.0 (const: 1.81.0) ยท Sourcepub const fn abs_diff(self, other: Duration) -> Duration
pub const fn abs_diff(self, other: Duration) -> Duration
Computes the absolute difference between self
and other
.
ยงExamples
use std::time::Duration;
assert_eq!(Duration::new(100, 0).abs_diff(Duration::new(80, 0)), Duration::new(20, 0));
assert_eq!(Duration::new(100, 400_000_000).abs_diff(Duration::new(110, 0)), Duration::new(9, 600_000_000));
1.16.0 (const: 1.58.0) ยท Sourcepub const fn checked_add(self, rhs: Duration) -> Option<Duration> โ
pub const fn checked_add(self, rhs: Duration) -> Option<Duration> โ
1.53.0 (const: 1.58.0) ยท Sourcepub const fn saturating_add(self, rhs: Duration) -> Duration
pub const fn saturating_add(self, rhs: Duration) -> Duration
Saturating Duration
addition. Computes self + other
, returning Duration::MAX
if overflow occurred.
ยงExamples
#![feature(duration_constants)]
use std::time::Duration;
assert_eq!(Duration::new(0, 0).saturating_add(Duration::new(0, 1)), Duration::new(0, 1));
assert_eq!(Duration::new(1, 0).saturating_add(Duration::new(u64::MAX, 0)), Duration::MAX);
1.16.0 (const: 1.58.0) ยท Sourcepub const fn checked_sub(self, rhs: Duration) -> Option<Duration> โ
pub const fn checked_sub(self, rhs: Duration) -> Option<Duration> โ
Checked Duration
subtraction. Computes self - other
, returning None
if the result would be negative or if overflow occurred.
ยงExamples
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);
1.53.0 (const: 1.58.0) ยท Sourcepub const fn saturating_sub(self, rhs: Duration) -> Duration
pub const fn saturating_sub(self, rhs: Duration) -> Duration
Saturating Duration
subtraction. Computes self - other
, returning Duration::ZERO
if the result would be negative or if overflow occurred.
ยงExamples
use std::time::Duration;
assert_eq!(Duration::new(0, 1).saturating_sub(Duration::new(0, 0)), Duration::new(0, 1));
assert_eq!(Duration::new(0, 0).saturating_sub(Duration::new(0, 1)), Duration::ZERO);
1.53.0 (const: 1.58.0) ยท Sourcepub const fn saturating_mul(self, rhs: u32) -> Duration
pub const fn saturating_mul(self, rhs: u32) -> Duration
Saturating Duration
multiplication. Computes self * other
, returning
Duration::MAX
if overflow occurred.
ยงExamples
#![feature(duration_constants)]
use std::time::Duration;
assert_eq!(Duration::new(0, 500_000_001).saturating_mul(2), Duration::new(1, 2));
assert_eq!(Duration::new(u64::MAX - 1, 0).saturating_mul(2), Duration::MAX);
1.16.0 (const: 1.58.0) ยท Sourcepub const fn checked_div(self, rhs: u32) -> Option<Duration> โ
pub const fn checked_div(self, rhs: u32) -> Option<Duration> โ
Checked Duration
division. Computes self / other
, returning None
if other == 0
.
ยงExamples
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);
1.38.0 (const: 1.83.0) ยท Sourcepub const fn as_secs_f64(&self) -> f64 โ
pub const fn as_secs_f64(&self) -> f64 โ
Returns the number of seconds contained by this Duration
as f64
.
The returned value includes the fractional (nanosecond) part of the duration.
ยงExamples
use std::time::Duration;
let dur = Duration::new(2, 700_000_000);
assert_eq!(dur.as_secs_f64(), 2.7);
1.38.0 (const: 1.83.0) ยท Sourcepub const fn as_secs_f32(&self) -> f32 โ
pub const fn as_secs_f32(&self) -> f32 โ
Returns the number of seconds contained by this Duration
as f32
.
The returned value includes the fractional (nanosecond) part of the duration.
ยงExamples
use std::time::Duration;
let dur = Duration::new(2, 700_000_000);
assert_eq!(dur.as_secs_f32(), 2.7);
Sourcepub const fn as_millis_f64(&self) -> f64 โ
๐ฌThis is a nightly-only experimental API. (duration_millis_float
)
pub const fn as_millis_f64(&self) -> f64 โ
duration_millis_float
)Returns the number of milliseconds contained by this Duration
as f64
.
The returned value includes the fractional (nanosecond) part of the duration.
ยงExamples
#![feature(duration_millis_float)]
use std::time::Duration;
let dur = Duration::new(2, 345_678_000);
assert_eq!(dur.as_millis_f64(), 2_345.678);
Sourcepub const fn as_millis_f32(&self) -> f32 โ
๐ฌThis is a nightly-only experimental API. (duration_millis_float
)
pub const fn as_millis_f32(&self) -> f32 โ
duration_millis_float
)Returns the number of milliseconds contained by this Duration
as f32
.
The returned value includes the fractional (nanosecond) part of the duration.
ยงExamples
#![feature(duration_millis_float)]
use std::time::Duration;
let dur = Duration::new(2, 345_678_000);
assert_eq!(dur.as_millis_f32(), 2_345.678);
1.38.0 ยท Sourcepub fn from_secs_f64(secs: f64) -> Duration
pub fn from_secs_f64(secs: f64) -> Duration
Creates a new Duration
from the specified number of seconds represented
as f64
.
ยงPanics
This constructor will panic if secs
is negative, overflows Duration
or not finite.
ยงExamples
use std::time::Duration;
let res = Duration::from_secs_f64(0.0);
assert_eq!(res, Duration::new(0, 0));
let res = Duration::from_secs_f64(1e-20);
assert_eq!(res, Duration::new(0, 0));
let res = Duration::from_secs_f64(4.2e-7);
assert_eq!(res, Duration::new(0, 420));
let res = Duration::from_secs_f64(2.7);
assert_eq!(res, Duration::new(2, 700_000_000));
let res = Duration::from_secs_f64(3e10);
assert_eq!(res, Duration::new(30_000_000_000, 0));
// subnormal float
let res = Duration::from_secs_f64(f64::from_bits(1));
assert_eq!(res, Duration::new(0, 0));
// conversion uses rounding
let res = Duration::from_secs_f64(0.999e-9);
assert_eq!(res, Duration::new(0, 1));
1.38.0 ยท Sourcepub fn from_secs_f32(secs: f32) -> Duration
pub fn from_secs_f32(secs: f32) -> Duration
Creates a new Duration
from the specified number of seconds represented
as f32
.
ยงPanics
This constructor will panic if secs
is negative, overflows Duration
or not finite.
ยงExamples
use std::time::Duration;
let res = Duration::from_secs_f32(0.0);
assert_eq!(res, Duration::new(0, 0));
let res = Duration::from_secs_f32(1e-20);
assert_eq!(res, Duration::new(0, 0));
let res = Duration::from_secs_f32(4.2e-7);
assert_eq!(res, Duration::new(0, 420));
let res = Duration::from_secs_f32(2.7);
assert_eq!(res, Duration::new(2, 700_000_048));
let res = Duration::from_secs_f32(3e10);
assert_eq!(res, Duration::new(30_000_001_024, 0));
// subnormal float
let res = Duration::from_secs_f32(f32::from_bits(1));
assert_eq!(res, Duration::new(0, 0));
// conversion uses rounding
let res = Duration::from_secs_f32(0.999e-9);
assert_eq!(res, Duration::new(0, 1));
1.38.0 ยท Sourcepub fn mul_f64(self, rhs: f64) -> Duration
pub fn mul_f64(self, rhs: f64) -> Duration
Multiplies Duration
by f64
.
ยงPanics
This method will panic if result is negative, overflows Duration
or not finite.
ยงExamples
use std::time::Duration;
let dur = Duration::new(2, 700_000_000);
assert_eq!(dur.mul_f64(3.14), Duration::new(8, 478_000_000));
assert_eq!(dur.mul_f64(3.14e5), Duration::new(847_800, 0));
1.38.0 ยท Sourcepub fn mul_f32(self, rhs: f32) -> Duration
pub fn mul_f32(self, rhs: f32) -> Duration
Multiplies Duration
by f32
.
ยงPanics
This method will panic if result is negative, overflows Duration
or not finite.
ยงExamples
use std::time::Duration;
let dur = Duration::new(2, 700_000_000);
assert_eq!(dur.mul_f32(3.14), Duration::new(8, 478_000_641));
assert_eq!(dur.mul_f32(3.14e5), Duration::new(847_800, 0));
1.38.0 ยท Sourcepub fn div_f64(self, rhs: f64) -> Duration
pub fn div_f64(self, rhs: f64) -> Duration
Divides Duration
by f64
.
ยงPanics
This method will panic if result is negative, overflows Duration
or not finite.
ยงExamples
use std::time::Duration;
let dur = Duration::new(2, 700_000_000);
assert_eq!(dur.div_f64(3.14), Duration::new(0, 859_872_611));
assert_eq!(dur.div_f64(3.14e5), Duration::new(0, 8_599));
1.38.0 ยท Sourcepub fn div_f32(self, rhs: f32) -> Duration
pub fn div_f32(self, rhs: f32) -> Duration
Divides Duration
by f32
.
ยงPanics
This method will panic if result is negative, overflows Duration
or not finite.
ยงExamples
use std::time::Duration;
let dur = Duration::new(2, 700_000_000);
// note that due to rounding errors result is slightly
// different from 0.859_872_611
assert_eq!(dur.div_f32(3.14), Duration::new(0, 859_872_580));
assert_eq!(dur.div_f32(3.14e5), Duration::new(0, 8_599));
1.80.0 (const: 1.83.0) ยท Sourcepub const fn div_duration_f64(self, rhs: Duration) -> f64 โ
pub const fn div_duration_f64(self, rhs: Duration) -> f64 โ
Divides Duration
by Duration
and returns f64
.
ยงExamples
use std::time::Duration;
let dur1 = Duration::new(2, 700_000_000);
let dur2 = Duration::new(5, 400_000_000);
assert_eq!(dur1.div_duration_f64(dur2), 0.5);
1.80.0 (const: 1.83.0) ยท Sourcepub const fn div_duration_f32(self, rhs: Duration) -> f32 โ
pub const fn div_duration_f32(self, rhs: Duration) -> f32 โ
Divides Duration
by Duration
and returns f32
.
ยงExamples
use std::time::Duration;
let dur1 = Duration::new(2, 700_000_000);
let dur2 = Duration::new(5, 400_000_000);
assert_eq!(dur1.div_duration_f32(dur2), 0.5);
Sourceยงimpl Duration
impl Duration
1.66.0 ยท Sourcepub fn try_from_secs_f32(secs: f32) -> Result<Duration, TryFromFloatSecsError> โ
pub fn try_from_secs_f32(secs: f32) -> Result<Duration, TryFromFloatSecsError> โ
The checked version of from_secs_f32
.
This constructor will return an Err
if secs
is negative, overflows Duration
or not finite.
ยงExamples
use std::time::Duration;
let res = Duration::try_from_secs_f32(0.0);
assert_eq!(res, Ok(Duration::new(0, 0)));
let res = Duration::try_from_secs_f32(1e-20);
assert_eq!(res, Ok(Duration::new(0, 0)));
let res = Duration::try_from_secs_f32(4.2e-7);
assert_eq!(res, Ok(Duration::new(0, 420)));
let res = Duration::try_from_secs_f32(2.7);
assert_eq!(res, Ok(Duration::new(2, 700_000_048)));
let res = Duration::try_from_secs_f32(3e10);
assert_eq!(res, Ok(Duration::new(30_000_001_024, 0)));
// subnormal float:
let res = Duration::try_from_secs_f32(f32::from_bits(1));
assert_eq!(res, Ok(Duration::new(0, 0)));
let res = Duration::try_from_secs_f32(-5.0);
assert!(res.is_err());
let res = Duration::try_from_secs_f32(f32::NAN);
assert!(res.is_err());
let res = Duration::try_from_secs_f32(2e19);
assert!(res.is_err());
// the conversion uses rounding with tie resolution to even
let res = Duration::try_from_secs_f32(0.999e-9);
assert_eq!(res, Ok(Duration::new(0, 1)));
// this float represents exactly 976562.5e-9
let val = f32::from_bits(0x3A80_0000);
let res = Duration::try_from_secs_f32(val);
assert_eq!(res, Ok(Duration::new(0, 976_562)));
// this float represents exactly 2929687.5e-9
let val = f32::from_bits(0x3B40_0000);
let res = Duration::try_from_secs_f32(val);
assert_eq!(res, Ok(Duration::new(0, 2_929_688)));
// this float represents exactly 1.000_976_562_5
let val = f32::from_bits(0x3F802000);
let res = Duration::try_from_secs_f32(val);
assert_eq!(res, Ok(Duration::new(1, 976_562)));
// this float represents exactly 1.002_929_687_5
let val = f32::from_bits(0x3F806000);
let res = Duration::try_from_secs_f32(val);
assert_eq!(res, Ok(Duration::new(1, 2_929_688)));
1.66.0 ยท Sourcepub fn try_from_secs_f64(secs: f64) -> Result<Duration, TryFromFloatSecsError> โ
pub fn try_from_secs_f64(secs: f64) -> Result<Duration, TryFromFloatSecsError> โ
The checked version of from_secs_f64
.
This constructor will return an Err
if secs
is negative, overflows Duration
or not finite.
ยงExamples
use std::time::Duration;
let res = Duration::try_from_secs_f64(0.0);
assert_eq!(res, Ok(Duration::new(0, 0)));
let res = Duration::try_from_secs_f64(1e-20);
assert_eq!(res, Ok(Duration::new(0, 0)));
let res = Duration::try_from_secs_f64(4.2e-7);
assert_eq!(res, Ok(Duration::new(0, 420)));
let res = Duration::try_from_secs_f64(2.7);
assert_eq!(res, Ok(Duration::new(2, 700_000_000)));
let res = Duration::try_from_secs_f64(3e10);
assert_eq!(res, Ok(Duration::new(30_000_000_000, 0)));
// subnormal float
let res = Duration::try_from_secs_f64(f64::from_bits(1));
assert_eq!(res, Ok(Duration::new(0, 0)));
let res = Duration::try_from_secs_f64(-5.0);
assert!(res.is_err());
let res = Duration::try_from_secs_f64(f64::NAN);
assert!(res.is_err());
let res = Duration::try_from_secs_f64(2e19);
assert!(res.is_err());
// the conversion uses rounding with tie resolution to even
let res = Duration::try_from_secs_f64(0.999e-9);
assert_eq!(res, Ok(Duration::new(0, 1)));
let res = Duration::try_from_secs_f64(0.999_999_999_499);
assert_eq!(res, Ok(Duration::new(0, 999_999_999)));
let res = Duration::try_from_secs_f64(0.999_999_999_501);
assert_eq!(res, Ok(Duration::new(1, 0)));
let res = Duration::try_from_secs_f64(42.999_999_999_499);
assert_eq!(res, Ok(Duration::new(42, 999_999_999)));
let res = Duration::try_from_secs_f64(42.999_999_999_501);
assert_eq!(res, Ok(Duration::new(43, 0)));
// this float represents exactly 976562.5e-9
let val = f64::from_bits(0x3F50_0000_0000_0000);
let res = Duration::try_from_secs_f64(val);
assert_eq!(res, Ok(Duration::new(0, 976_562)));
// this float represents exactly 2929687.5e-9
let val = f64::from_bits(0x3F68_0000_0000_0000);
let res = Duration::try_from_secs_f64(val);
assert_eq!(res, Ok(Duration::new(0, 2_929_688)));
// this float represents exactly 1.000_976_562_5
let val = f64::from_bits(0x3FF0_0400_0000_0000);
let res = Duration::try_from_secs_f64(val);
assert_eq!(res, Ok(Duration::new(1, 976_562)));
// this float represents exactly 1.002_929_687_5
let val = f64::from_bits(0x3_FF00_C000_0000_000);
let res = Duration::try_from_secs_f64(val);
assert_eq!(res, Ok(Duration::new(1, 2_929_688)));
Trait Implementationsยง
ยงimpl<'a> Add<Duration> for &'a Zoned
Adds an unsigned duration of time to a zoned datetime.
impl<'a> Add<Duration> for &'a Zoned
Adds an unsigned duration of time to a zoned datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Zoned::checked_add
].
ยงimpl Add<Duration> for Date
Adds an unsigned duration of time to a date.
impl Add<Duration> for Date
Adds an unsigned duration of time to a date.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Date::checked_add
].
ยงimpl Add<Duration> for DateTime
Adds an unsigned duration of time to a datetime.
impl Add<Duration> for DateTime
Adds an unsigned duration of time to a datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [DateTime::checked_add
].
ยงimpl Add<Duration> for Offset
Adds an unsigned duration of time to an offset. This panics on overflow.
impl Add<Duration> for Offset
Adds an unsigned duration of time to an offset. This panics on overflow.
For checked arithmetic, see [Offset::checked_add
].
1.8.0 ยท Sourceยงimpl Add<Duration> for Instant
impl Add<Duration> for Instant
1.8.0 (const: unstable) ยท Sourceยงimpl Add<Duration> for SystemTime
impl Add<Duration> for SystemTime
Sourceยงfn add(self, dur: Duration) -> SystemTime
fn add(self, dur: Duration) -> SystemTime
ยงPanics
This function may panic if the resulting point in time cannot be represented by the
underlying data structure. See SystemTime::checked_add
for a version without panic.
Sourceยงtype Output = SystemTime
type Output = SystemTime
+
operator.ยงimpl Add<Duration> for Time
Adds an unsigned duration of time. This uses wrapping arithmetic.
impl Add<Duration> for Time
Adds an unsigned duration of time. This uses wrapping arithmetic.
For checked arithmetic, see [Time::checked_add
].
ยงimpl Add<Duration> for Timestamp
Adds an unsigned duration of time to a timestamp.
impl Add<Duration> for Timestamp
Adds an unsigned duration of time to a timestamp.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Timestamp::checked_add
].
ยงimpl AddAssign<Duration> for Date
Adds an unsigned duration of time to a date in place.
impl AddAssign<Duration> for Date
Adds an unsigned duration of time to a date in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Date::checked_add
].
ยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+=
operation. Read moreยงimpl AddAssign<Duration> for DateTime
Adds an unsigned duration of time to a datetime in place.
impl AddAssign<Duration> for DateTime
Adds an unsigned duration of time to a datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [DateTime::checked_add
].
ยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+=
operation. Read moreยงimpl AddAssign<Duration> for Offset
Adds an unsigned duration of time to an offset in place. This panics on
overflow.
impl AddAssign<Duration> for Offset
Adds an unsigned duration of time to an offset in place. This panics on overflow.
For checked arithmetic, see [Offset::checked_add
].
ยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+=
operation. Read more1.9.0 ยท Sourceยงimpl AddAssign<Duration> for Instant
impl AddAssign<Duration> for Instant
Sourceยงfn add_assign(&mut self, other: Duration)
fn add_assign(&mut self, other: Duration)
+=
operation. Read more1.9.0 (const: unstable) ยท Sourceยงimpl AddAssign<Duration> for SystemTime
impl AddAssign<Duration> for SystemTime
Sourceยงfn add_assign(&mut self, other: Duration)
fn add_assign(&mut self, other: Duration)
+=
operation. Read moreยงimpl AddAssign<Duration> for Time
Adds an unsigned duration of time in place. This uses wrapping arithmetic.
impl AddAssign<Duration> for Time
Adds an unsigned duration of time in place. This uses wrapping arithmetic.
For checked arithmetic, see [Time::checked_add
].
ยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+=
operation. Read moreยงimpl AddAssign<Duration> for Timestamp
Adds an unsigned duration of time to a timestamp in place.
impl AddAssign<Duration> for Timestamp
Adds an unsigned duration of time to a timestamp in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Timestamp::checked_add
].
ยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+=
operation. Read moreยงimpl AddAssign<Duration> for Zoned
Adds an unsigned duration of time to a zoned datetime in place.
impl AddAssign<Duration> for Zoned
Adds an unsigned duration of time to a zoned datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Zoned::checked_add
].
ยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+=
operation. Read more1.9.0 (const: unstable) ยท Sourceยงimpl AddAssign for Duration
impl AddAssign for Duration
Sourceยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+=
operation. Read moreSourceยงimpl BitSized<128> for Duration
impl BitSized<128> for Duration
Sourceยงconst BIT_SIZE: usize = _
const BIT_SIZE: usize = _
Sourceยงconst MIN_BYTE_SIZE: usize = _
const MIN_BYTE_SIZE: usize = _
Sourceยงimpl ConstDefault for Duration
impl ConstDefault for Duration
Sourceยงimpl<'de> Deserialize<'de> for Duration
impl<'de> Deserialize<'de> for Duration
Sourceยงfn deserialize<D>(
deserializer: D,
) -> Result<Duration, <D as Deserializer<'de>>::Error> โwhere
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<Duration, <D as Deserializer<'de>>::Error> โwhere
D: Deserializer<'de>,
1.9.0 (const: unstable) ยท Sourceยงimpl DivAssign<u32> for Duration
impl DivAssign<u32> for Duration
Sourceยงfn div_assign(&mut self, rhs: u32)
fn div_assign(&mut self, rhs: u32)
/=
operation. Read moreSourceยงimpl From<Duration> for LinuxTimespec
Available on crate feature linux
only.
impl From<Duration> for LinuxTimespec
linux
only.ยงimpl<'py> IntoPyObject<'py> for &Duration
impl<'py> IntoPyObject<'py> for &Duration
ยงimpl<'py> IntoPyObject<'py> for Duration
impl<'py> IntoPyObject<'py> for Duration
1.9.0 (const: unstable) ยท Sourceยงimpl MulAssign<u32> for Duration
impl MulAssign<u32> for Duration
Sourceยงfn mul_assign(&mut self, rhs: u32)
fn mul_assign(&mut self, rhs: u32)
*=
operation. Read more1.3.0 ยท Sourceยงimpl Ord for Duration
impl Ord for Duration
1.21.0 ยท Sourceยงfn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.3.0 ยท Sourceยงimpl PartialOrd for Duration
impl PartialOrd for Duration
Sourceยงimpl Serialize for Duration
impl Serialize for Duration
Sourceยงfn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> โwhere
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> โwhere
S: Serializer,
ยงimpl<'a> Sub<Duration> for &'a Zoned
Subtracts an unsigned duration of time from a zoned datetime.
impl<'a> Sub<Duration> for &'a Zoned
Subtracts an unsigned duration of time from a zoned datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Zoned::checked_sub
].
ยงimpl Sub<Duration> for Date
Subtracts an unsigned duration of time from a date.
impl Sub<Duration> for Date
Subtracts an unsigned duration of time from a date.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Date::checked_sub
].
ยงimpl Sub<Duration> for DateTime
Subtracts an unsigned duration of time from a datetime.
impl Sub<Duration> for DateTime
Subtracts an unsigned duration of time from a datetime.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [DateTime::checked_sub
].
ยงimpl Sub<Duration> for Offset
Subtracts an unsigned duration of time from an offset. This panics on
overflow.
impl Sub<Duration> for Offset
Subtracts an unsigned duration of time from an offset. This panics on overflow.
For checked arithmetic, see [Offset::checked_sub
].
1.8.0 (const: unstable) ยท Sourceยงimpl Sub<Duration> for SystemTime
impl Sub<Duration> for SystemTime
Sourceยงtype Output = SystemTime
type Output = SystemTime
-
operator.ยงimpl Sub<Duration> for Time
Subtracts an unsigned duration of time. This uses wrapping arithmetic.
impl Sub<Duration> for Time
Subtracts an unsigned duration of time. This uses wrapping arithmetic.
For checked arithmetic, see [Time::checked_sub
].
ยงimpl Sub<Duration> for Timestamp
Subtracts an unsigned duration of time from a timestamp.
impl Sub<Duration> for Timestamp
Subtracts an unsigned duration of time from a timestamp.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Timestamp::checked_sub
].
ยงimpl SubAssign<Duration> for Date
Subtracts an unsigned duration of time from a date in place.
impl SubAssign<Duration> for Date
Subtracts an unsigned duration of time from a date in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Date::checked_sub
].
ยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-=
operation. Read moreยงimpl SubAssign<Duration> for DateTime
Subtracts an unsigned duration of time from a datetime in place.
impl SubAssign<Duration> for DateTime
Subtracts an unsigned duration of time from a datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [DateTime::checked_sub
].
ยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-=
operation. Read moreยงimpl SubAssign<Duration> for Offset
Subtracts an unsigned duration of time from an offset in place. This panics
on overflow.
impl SubAssign<Duration> for Offset
Subtracts an unsigned duration of time from an offset in place. This panics on overflow.
For checked arithmetic, see [Offset::checked_sub
].
ยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-=
operation. Read more1.9.0 ยท Sourceยงimpl SubAssign<Duration> for Instant
impl SubAssign<Duration> for Instant
Sourceยงfn sub_assign(&mut self, other: Duration)
fn sub_assign(&mut self, other: Duration)
-=
operation. Read more1.9.0 (const: unstable) ยท Sourceยงimpl SubAssign<Duration> for SystemTime
impl SubAssign<Duration> for SystemTime
Sourceยงfn sub_assign(&mut self, other: Duration)
fn sub_assign(&mut self, other: Duration)
-=
operation. Read moreยงimpl SubAssign<Duration> for Time
Subtracts an unsigned duration of time in place. This uses wrapping
arithmetic.
impl SubAssign<Duration> for Time
Subtracts an unsigned duration of time in place. This uses wrapping arithmetic.
For checked arithmetic, see [Time::checked_sub
].
ยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-=
operation. Read moreยงimpl SubAssign<Duration> for Timestamp
Subtracts an unsigned duration of time from a timestamp in place.
impl SubAssign<Duration> for Timestamp
Subtracts an unsigned duration of time from a timestamp in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Timestamp::checked_sub
].
ยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-=
operation. Read moreยงimpl SubAssign<Duration> for Zoned
Subtracts an unsigned duration of time from a zoned datetime in place.
impl SubAssign<Duration> for Zoned
Subtracts an unsigned duration of time from a zoned datetime in place.
This uses checked arithmetic and panics on overflow. To handle overflow
without panics, use [Zoned::checked_sub
].
ยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-=
operation. Read more1.9.0 (const: unstable) ยท Sourceยงimpl SubAssign for Duration
impl SubAssign for Duration
Sourceยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-=
operation. Read moreยงimpl TryFrom<Duration> for Span
Converts a std::time::Duration
to a Span
.
impl TryFrom<Duration> for Span
Converts a std::time::Duration
to a Span
.
The span returned from this conversion will only ever have non-zero units of seconds or smaller.
ยงErrors
This only fails when the given Duration
overflows the maximum number of
seconds representable by a Span
.
ยงExample
This shows a basic conversion:
use std::time::Duration;
use jiff::{Span, ToSpan};
let duration = Duration::new(86_400, 123_456_789);
let span = Span::try_from(duration)?;
// A duration-to-span conversion always results in a span with
// non-zero units no bigger than seconds.
assert_eq!(
span.fieldwise(),
86_400.seconds().milliseconds(123).microseconds(456).nanoseconds(789),
);
ยงExample: rounding
This example shows how to convert a Duration
to a Span
, and then round
it up to bigger units given a relative date:
use std::time::Duration;
use jiff::{civil::date, Span, SpanRound, ToSpan, Unit};
let duration = Duration::new(450 * 86_401, 0);
let span = Span::try_from(duration)?;
// We get back a simple span of just seconds:
assert_eq!(span.fieldwise(), Span::new().seconds(450 * 86_401));
// But we can balance it up to bigger units:
let options = SpanRound::new()
.largest(Unit::Year)
.relative(date(2024, 1, 1));
assert_eq!(
span.round(options)?,
1.year().months(2).days(25).minutes(7).seconds(30).fieldwise(),
);
ยงimpl TryFrom<Span> for Duration
Converts a Span
to a std::time::Duration
.
impl TryFrom<Span> for Duration
Converts a Span
to a std::time::Duration
.
ยงErrors
This can fail for only two reasons:
- The span is negative. This is an error because a
std::time::Duration
is unsigned.) - The span has any non-zero units greater than hours. This is an error because itโs impossible to determine the length of, e.g., a month without a reference date.
This can never result in overflow because a Duration
can represent a
bigger span of time than Span
when limited to units of hours or lower.
If you need to convert a Span
to a Duration
that has non-zero
units bigger than hours, then please use [Span::to_duration
] with a
corresponding relative date.
ยงExample: maximal span
This example shows the maximum possible span using units of hours or
smaller, and the corresponding Duration
value:
use std::time::Duration;
use jiff::Span;
let sp = Span::new()
.hours(175_307_616)
.minutes(10_518_456_960i64)
.seconds(631_107_417_600i64)
.milliseconds(631_107_417_600_000i64)
.microseconds(631_107_417_600_000_000i64)
.nanoseconds(9_223_372_036_854_775_807i64);
let duration = Duration::try_from(sp)?;
assert_eq!(duration, Duration::new(3_164_760_460_036, 854_775_807));
ยงExample: converting a negative span
Since a Span
is signed and a Duration
is unsigned, converting
a negative Span
to Duration
will always fail. One can use
[Span::signum
] to get the sign of the span and [Span::abs
] to make the
span positive before converting it to a Duration
:
use std::time::Duration;
use jiff::{Span, ToSpan};
let span = -86_400.seconds().nanoseconds(1);
let (sign, duration) = (span.signum(), Duration::try_from(span.abs())?);
assert_eq!((sign, duration), (-1, Duration::new(86_400, 1)));
impl Copy for Duration
impl Eq for Duration
impl StructuralPartialEq for Duration
Auto Trait Implementationsยง
impl Freeze for Duration
impl RefUnwindSafe for Duration
impl UnwindSafe for Duration
impl Send for Duration
impl Sync for Duration
impl Unpin for Duration
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<T> ByteSized for T
impl<T> ByteSized for T
Sourceยงconst BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Sourceยงfn byte_align(&self) -> usize โ
fn byte_align(&self) -> usize โ
Sourceยงfn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
ยงimpl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Sourceยงimpl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
ยงimpl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
ยงimpl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
ยงfn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.ยงimpl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
ยงfn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Sourceยงimpl<T> ExtAny for T
impl<T> ExtAny for T
Sourceยงfn type_hash_with<H: Hasher>(&self, hasher: H) -> u64 โ
fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64 โ
TypeId
of Self
using a custom hasher.Sourceยงfn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Sourceยงimpl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Sourceยงconst NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Sourceยงfn mem_align_of<T>() -> usize โ
fn mem_align_of<T>() -> usize โ
Sourceยงfn mem_align_of_val(&self) -> usize โ
fn mem_align_of_val(&self) -> usize โ
Sourceยงfn mem_size_of_val(&self) -> usize โ
fn mem_size_of_val(&self) -> usize โ
Sourceยงfn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSourceยงfn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSourceยงfn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Sourceยงunsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSourceยงunsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSourceยงfn mem_as_bytes(&self) -> &[u8] โ
fn mem_as_bytes(&self) -> &[u8] โ
unsafe_slice
only.ยงimpl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
ยงfn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr> โ
fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr> โ
ยงimpl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
ยงimpl<T> Hook for T
impl<T> Hook for T
Sourceยงimpl<T> IntoEither for T
impl<T> IntoEither for T
Sourceยงfn into_either(self, into_left: bool) -> Either<Self, Self> โ
fn into_either(self, into_left: bool) -> Either<Self, Self> โ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSourceยงfn into_either_with<F>(self, into_left: F) -> Either<Self, Self> โ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> โ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreยงimpl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
ยงfn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr> โ
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr> โ
self
into an owned Python object, dropping type information.ยงfn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr> โ
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr> โ
self
into an owned Python object, dropping type information and unbinding it
from the 'py
lifetime.ยงfn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr> โ
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr> โ
self
into a Python object. Read more