Struct SignedDurationRound
pub struct SignedDurationRound { /* private fields */ }Expand description
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 jiff::{RoundMode, SignedDuration, SignedDurationRound, Unit};
let dur = SignedDuration::new(4 * 60 * 60 + 17 * 60 + 1, 123_456_789);
let rounded = dur.round(
SignedDurationRound::new()
.smallest(Unit::Second)
.increment(30)
.mode(RoundMode::Expand),
)?;
assert_eq!(rounded, SignedDuration::from_secs(4 * 60 * 60 + 17 * 60 + 30));
Implementations§
§impl SignedDurationRound
impl SignedDurationRound
pub fn new() -> SignedDurationRound
pub fn new() -> SignedDurationRound
Create a new default configuration for rounding a signed duration via
SignedDuration::round.
The default configuration does no rounding.
pub fn smallest(self, unit: Unit) -> SignedDurationRound
pub fn smallest(self, unit: Unit) -> SignedDurationRound
Set the smallest units allowed in the duration returned. These are the units that the duration is rounded to.
§Errors
The unit must be Unit::Hour or smaller.
§Example
A basic example that rounds to the nearest minute:
use jiff::{SignedDuration, Unit};
let duration = SignedDuration::new(15 * 60 + 46, 0);
assert_eq!(duration.round(Unit::Minute)?, SignedDuration::from_mins(16));
pub fn mode(self, mode: RoundMode) -> SignedDurationRound
pub fn mode(self, mode: RoundMode) -> SignedDurationRound
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 minute, but changing its rounding mode to truncation:
use jiff::{RoundMode, SignedDuration, SignedDurationRound, Unit};
let duration = SignedDuration::new(15 * 60 + 46, 0);
assert_eq!(
duration.round(SignedDurationRound::new()
.smallest(Unit::Minute)
.mode(RoundMode::Trunc),
)?,
// The default round mode does rounding like
// how you probably learned in school, and would
// result in rounding up to 16 minutes. But we
// change it to truncation here, which makes it
// round down.
SignedDuration::from_mins(15),
);
pub fn increment(self, increment: i64) -> SignedDurationRound
pub fn increment(self, increment: i64) -> SignedDurationRound
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::Nanosecond, then some
of the valid values for the rounding increment are 1, 2, 4, 5,
100 and 500. Namely, any integer that divides evenly into 1,000
nanoseconds since there are 1,000 nanoseconds in the next highest
unit (microseconds).
§Example
This shows how to round a duration to the nearest 5 minute increment:
use jiff::{SignedDuration, Unit};
let duration = SignedDuration::new(4 * 60 * 60 + 2 * 60 + 30, 0);
assert_eq!(
duration.round((Unit::Minute, 5))?,
SignedDuration::new(4 * 60 * 60 + 5 * 60, 0),
);
Trait Implementations§
§impl Clone for SignedDurationRound
impl Clone for SignedDurationRound
§fn clone(&self) -> SignedDurationRound
fn clone(&self) -> SignedDurationRound
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for SignedDurationRound
impl Debug for SignedDurationRound
§impl Default for SignedDurationRound
impl Default for SignedDurationRound
§fn default() -> SignedDurationRound
fn default() -> SignedDurationRound
§impl From<(Unit, i64)> for SignedDurationRound
impl From<(Unit, i64)> for SignedDurationRound
§fn from(_: (Unit, i64)) -> SignedDurationRound
fn from(_: (Unit, i64)) -> SignedDurationRound
§impl From<Unit> for SignedDurationRound
impl From<Unit> for SignedDurationRound
§fn from(unit: Unit) -> SignedDurationRound
fn from(unit: Unit) -> SignedDurationRound
impl Copy for 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 UnwindSafe for SignedDurationRound
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);