Struct SignedDurationRound
struct SignedDurationRound { ... }
Options for SignedDuration::round.
This type provides a way to configure the rounding of a duration. This includes setting the smallest unit (i.e., the unit to round), the rounding increment and the rounding mode (e.g., "ceil" or "truncate").
SignedDuration::round accepts anything that implements
Into<SignedDurationRound>. There are a few key trait implementations that
make this convenient:
From<Unit> for SignedDurationRoundwill construct a rounding configuration where the smallest unit is set to the one given.From<(Unit, i64)> for SignedDurationRoundwill construct a rounding configuration where the smallest unit and the rounding increment are set to the ones given.
In order to set other options (like the rounding mode), one must explicitly
create a SignedDurationRound and pass it to SignedDuration::round.
Example
This example shows how to always round up to the nearest half-minute:
use ;
let dur = new;
let rounded = dur.round?;
assert_eq!;
# Ok::
Implementations
impl SignedDurationRound
fn new() -> SignedDurationRoundCreate a new default configuration for rounding a signed duration via
SignedDuration::round.The default configuration does no rounding.
fn smallest(self: Self, unit: Unit) -> SignedDurationRoundSet the smallest units allowed in the duration returned. These are the units that the duration is rounded to.
Errors
The unit must be
Unit::Houror smaller.Example
A basic example that rounds to the nearest minute:
use ; let duration = new; assert_eq!; # Ok::fn mode(self: Self, mode: RoundMode) -> SignedDurationRoundSet the rounding mode.
This defaults to
RoundMode::HalfExpand, which makes rounding work like how you were taught in school.Example
A basic example that rounds to the nearest minute, but changing its rounding mode to truncation:
use ; let duration = new; assert_eq!; # Ok::fn increment(self: Self, increment: i64) -> SignedDurationRoundSet the rounding increment for the smallest unit.
The default value is
1. Other values permit rounding the smallest unit to the nearest integer increment specified. For example, if the smallest unit is set toUnit::Minute, then a rounding increment of30would result in rounding in increments of a half hour. That is, the only minute value that could result would be0or30.Errors
The rounding increment must divide evenly into the next highest unit after the smallest unit configured (and must not be equivalent to it). For example, if the smallest unit is
Unit::Nanosecond, then some of the valid values for the rounding increment are1,2,4,5,100and500. Namely, any integer that divides evenly into1,000nanoseconds since there are1,000nanoseconds in the next highest unit (microseconds).Example
This shows how to round a duration to the nearest 5 minute increment:
use ; let duration = new; assert_eq!; # Ok::
impl Clone for SignedDurationRound
fn clone(self: &Self) -> SignedDurationRound
impl Copy for SignedDurationRound
impl Debug for SignedDurationRound
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Default for SignedDurationRound
fn default() -> SignedDurationRound
impl Freeze for SignedDurationRound
impl From for SignedDurationRound
fn from(unit: Unit) -> SignedDurationRound
impl From for SignedDurationRound
fn from((unit, increment): (Unit, i64)) -> SignedDurationRound
impl RefUnwindSafe for SignedDurationRound
impl Send for SignedDurationRound
impl Sync for SignedDurationRound
impl Unpin for SignedDurationRound
impl UnsafeUnpin for SignedDurationRound
impl UnwindSafe for SignedDurationRound
impl<T> Any for SignedDurationRound
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for SignedDurationRound
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for SignedDurationRound
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for SignedDurationRound
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for SignedDurationRound
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for SignedDurationRound
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T, U> Into for SignedDurationRound
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for SignedDurationRound
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for SignedDurationRound
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>