Struct SignedDurationRound
pub struct SignedDurationRound { /* private fields */ }
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, 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, 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, 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
Unlike rounding a
Span, the increment does not need to divide evenly into the next largest unit. Callers can round a signed duration to any increment value so long as it is greater than zero and less than or equal to1_000_000_000.Example
This shows how to round a duration to the nearest 5 minute increment:
use ; let duration = new; assert_eq!; # Ok::
Trait Implementations
impl Clone for SignedDurationRound
fn clone(&self) -> SignedDurationRound
impl Copy for SignedDurationRound
impl Debug for SignedDurationRound
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Default for SignedDurationRound
fn default() -> SignedDurationRound
impl From<(Unit, i64)> for SignedDurationRound
fn from((unit, increment): (Unit, i64)) -> SignedDurationRound
impl From<Unit> for SignedDurationRound
fn from(unit: Unit) -> SignedDurationRound
Auto Trait Implementations
impl Freeze for 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
Blanket Implementations
impl<T> Any for SignedDurationRound
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for SignedDurationRound
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for SignedDurationRound
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for SignedDurationRound
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for SignedDurationRound
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for SignedDurationRound
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for SignedDurationRound
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for SignedDurationRound
where
U: Into<T>,
type Error = Infallible;fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for SignedDurationRound
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>