Struct OffsetRound
pub struct OffsetRound(/* private fields */);Expand description
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 jiff::{tz::{Offset, OffsetRound}, RoundMode, Unit};
let offset = Offset::from_seconds(4 * 60 * 60 + 17 * 60).unwrap();
let rounded = offset.round(
OffsetRound::new()
.smallest(Unit::Minute)
.increment(30)
.mode(RoundMode::Expand),
)?;
assert_eq!(rounded, Offset::from_seconds(4 * 60 * 60 + 30 * 60).unwrap());
Implementations§
§impl OffsetRound
impl OffsetRound
pub fn new() -> OffsetRound
pub fn new() -> OffsetRound
Create a new default configuration for rounding a time zone offset via
Offset::round.
The default configuration does no rounding.
pub fn smallest(self, unit: Unit) -> OffsetRound
pub fn smallest(self, unit: Unit) -> OffsetRound
Set 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::Minute or Unit::Second.
§Example
A basic example that rounds to the nearest minute:
use jiff::{tz::Offset, Unit};
let offset = Offset::from_seconds(-(5 * 60 * 60 + 30)).unwrap();
assert_eq!(offset.round(Unit::Hour)?, Offset::from_hours(-5).unwrap());
pub fn mode(self, mode: RoundMode) -> OffsetRound
pub fn mode(self, mode: RoundMode) -> OffsetRound
Set 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 jiff::{tz::{Offset, OffsetRound}, RoundMode, Unit};
let offset = Offset::from_seconds(-(5 * 60 * 60 + 30 * 60)).unwrap();
assert_eq!(
offset.round(OffsetRound::new()
.smallest(Unit::Hour)
.mode(RoundMode::Trunc),
)?,
// The default round mode does rounding like
// how you probably learned in school, and would
// result in rounding to -6 hours. But we
// change it to truncation here, which makes it
// round -5.
Offset::from_hours(-5).unwrap(),
);
pub fn increment(self, increment: i64) -> OffsetRound
pub fn increment(self, increment: i64) -> OffsetRound
Set 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 to Unit::Minute, then a rounding increment of
30 would result in rounding in increments of a half hour. That is,
the only minute value that could result would be 0 or 30.
§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 are 1, 2,
4, 5, 15 and 30. Namely, any integer that divides evenly into
60 seconds since there are 60 seconds in the next highest unit
(minutes).
§Example
This shows how to round an offset to the nearest 30 minute increment:
use jiff::{tz::Offset, Unit};
let offset = Offset::from_seconds(4 * 60 * 60 + 15 * 60).unwrap();
assert_eq!(
offset.round((Unit::Minute, 30))?,
Offset::from_seconds(4 * 60 * 60 + 30 * 60).unwrap(),
);
Trait Implementations§
§impl Clone for OffsetRound
impl Clone for OffsetRound
§fn clone(&self) -> OffsetRound
fn clone(&self) -> OffsetRound
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for OffsetRound
impl Debug for OffsetRound
§impl Default for OffsetRound
impl Default for OffsetRound
§fn default() -> OffsetRound
fn default() -> OffsetRound
§impl From<(Unit, i64)> for OffsetRound
impl From<(Unit, i64)> for OffsetRound
§fn from(_: (Unit, i64)) -> OffsetRound
fn from(_: (Unit, i64)) -> OffsetRound
§impl From<Unit> for OffsetRound
impl From<Unit> for OffsetRound
§fn from(unit: Unit) -> OffsetRound
fn from(unit: Unit) -> OffsetRound
impl Copy for OffsetRound
Auto Trait Implementations§
impl Freeze for OffsetRound
impl RefUnwindSafe for OffsetRound
impl Send for OffsetRound
impl Sync for OffsetRound
impl Unpin for OffsetRound
impl UnwindSafe for OffsetRound
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute] value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi [Quirk] value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);