pub struct SpanCompare<'a> { /* private fields */ }time only.Expand description
Options for Span::compare.
This type provides a way to ergonomically compare two spans with an optional relative datetime. Namely, a relative datetime is only needed when at least one of the two spans being compared has a non-zero calendar unit (years, months, weeks or days). Otherwise, an error will be returned.
Callers may use SpanCompare::days_are_24_hours to opt into 24-hour
invariant days (and 7-day weeks) without providing a relative datetime.
The main way to construct values of this type is with its From trait
implementations:
From<Span> for SpanComparecompares the given span to the receiver inSpan::compare.From<(Span, civil::Date)> for SpanComparecompares the given span to the receiver inSpan::compare, relative to the given date. There are alsoFromimplementations forcivil::DateTime,ZonedandSpanRelativeTo.
§Example
use jiff::ToSpan;
let span1 = 3.hours();
let span2 = 180.minutes();
assert_eq!(span1.compare(span2)?, std::cmp::Ordering::Equal);
Implementations§
Source§impl<'a> SpanCompare<'a>
impl<'a> SpanCompare<'a>
Sourcepub fn days_are_24_hours(self) -> SpanCompare<'a>
pub fn days_are_24_hours(self) -> SpanCompare<'a>
This is a convenience function for setting the relative option on
this configuration to SpanRelativeTo::days_are_24_hours.
§Example
When comparing spans involving days, either a relative datetime must be provided, or a special assertion opting into 24-hour days is required. Otherwise, you get an error.
use jiff::{SpanCompare, ToSpan, Unit};
let span1 = 2.days().hours(12);
let span2 = 60.hours();
// No relative date provided, which results in an error.
assert_eq!(
span1.compare(span2).unwrap_err().to_string(),
"using unit 'day' in a span or configuration requires that \
either a relative reference time be given or \
`SpanRelativeTo::days_are_24_hours()` is used to indicate \
invariant 24-hour days, but neither were provided",
);
let ordering = span1.compare(
SpanCompare::from(span2).days_are_24_hours(),
)?;
assert_eq!(ordering, std::cmp::Ordering::Equal);
Trait Implementations§
Source§impl<'a> Clone for SpanCompare<'a>
impl<'a> Clone for SpanCompare<'a>
Source§fn clone(&self) -> SpanCompare<'a>
fn clone(&self) -> SpanCompare<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl<'a> Copy for SpanCompare<'a>
Source§impl<'a> Debug for SpanCompare<'a>
impl<'a> Debug for SpanCompare<'a>
Source§impl<'a> From<&'a Span> for SpanCompare<'static>
impl<'a> From<&'a Span> for SpanCompare<'static>
Source§fn from(span: &'a Span) -> SpanCompare<'static>
fn from(span: &'a Span) -> SpanCompare<'static>
Source§impl<'a, 'b> From<(&'a Span, SpanRelativeTo<'b>)> for SpanCompare<'b>
impl<'a, 'b> From<(&'a Span, SpanRelativeTo<'b>)> for SpanCompare<'b>
Source§fn from(_: (&'a Span, SpanRelativeTo<'b>)) -> SpanCompare<'b>
fn from(_: (&'a Span, SpanRelativeTo<'b>)) -> SpanCompare<'b>
Source§impl<'a> From<(Span, SpanRelativeTo<'a>)> for SpanCompare<'a>
impl<'a> From<(Span, SpanRelativeTo<'a>)> for SpanCompare<'a>
Source§fn from(_: (Span, SpanRelativeTo<'a>)) -> SpanCompare<'a>
fn from(_: (Span, SpanRelativeTo<'a>)) -> SpanCompare<'a>
Source§impl From<Span> for SpanCompare<'static>
impl From<Span> for SpanCompare<'static>
Source§fn from(span: Span) -> SpanCompare<'static>
fn from(span: Span) -> SpanCompare<'static>
Auto Trait Implementations§
impl<'a> Freeze for SpanCompare<'a>
impl<'a> RefUnwindSafe for SpanCompare<'a>
impl<'a> Send for SpanCompare<'a>
impl<'a> Sync for SpanCompare<'a>
impl<'a> Unpin for SpanCompare<'a>
impl<'a> UnsafeUnpin for SpanCompare<'a>
impl<'a> UnwindSafe for SpanCompare<'a>
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§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();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§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();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§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();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§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();Source§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>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§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);