Struct OffsetRound
struct OffsetRound(_)
Options for Offset::round.
This type provides a way to configure the rounding of an offset. This includes setting the smallest unit (i.e., the unit to round), the rounding increment and the rounding mode (e.g., "ceil" or "truncate").
Offset::round accepts anything that implements
Into<OffsetRound>. There are a few key trait implementations that
make this convenient:
From<Unit> for OffsetRoundwill construct a rounding configuration where the smallest unit is set to the one given.From<(Unit, i64)> for OffsetRoundwill 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 OffsetRound and pass it to Offset::round.
Example
This example shows how to always round up to the nearest half-hour:
use ;
let offset = from_seconds.unwrap;
let rounded = offset.round?;
assert_eq!;
# Ok::
Implementations
impl OffsetRound
fn new() -> OffsetRoundCreate a new default configuration for rounding a time zone offset via
Offset::round.The default configuration does no rounding.
fn smallest(self: Self, unit: Unit) -> OffsetRoundSet the smallest units allowed in the offset returned. These are the units that the offset is rounded to.
Errors
The unit must be
Unit::Hour,Unit::MinuteorUnit::Second.Example
A basic example that rounds to the nearest minute:
use ; let offset = from_seconds.unwrap; assert_eq!; # Ok::fn mode(self: Self, mode: RoundMode) -> OffsetRoundSet 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 hour, but changing its rounding mode to truncation:
use ; let offset = from_seconds.unwrap; assert_eq!; # Ok::fn increment(self: Self, increment: i64) -> OffsetRoundSet 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::Second, then some of the valid values for the rounding increment are1,2,4,5,15and30. Namely, any integer that divides evenly into60seconds since there are60seconds in the next highest unit (minutes).Example
This shows how to round an offset to the nearest 30 minute increment:
use ; let offset = from_seconds.unwrap; assert_eq!; # Ok::
impl Clone for OffsetRound
fn clone(self: &Self) -> OffsetRound
impl Copy for OffsetRound
impl Debug for OffsetRound
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Default for OffsetRound
fn default() -> OffsetRound
impl Freeze for OffsetRound
impl From for OffsetRound
fn from((unit, increment): (Unit, i64)) -> OffsetRound
impl From for OffsetRound
fn from(unit: Unit) -> OffsetRound
impl RefUnwindSafe for OffsetRound
impl Send for OffsetRound
impl Sync for OffsetRound
impl Unpin for OffsetRound
impl UnsafeUnpin for OffsetRound
impl UnwindSafe for OffsetRound
impl<T> Any for OffsetRound
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for OffsetRound
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for OffsetRound
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for OffsetRound
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for OffsetRound
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for OffsetRound
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T, U> Into for OffsetRound
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 OffsetRound
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for OffsetRound
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>