Struct PiecesNumericOffset
pub struct PiecesNumericOffset { /* private fields */ }Expand description
A specific numeric offset, including the sign of the offset, for use with
Pieces.
§Signedness
The sign attached to this type is usually redundant, since the underlying
Offset is itself signed. But it can be used to distinguish between
+00:00 (+00 is the preferred offset) and -00:00 (+00 is what should
be used, but only because the offset to local time is not known). Generally
speaking, one should regard -00:00 as equivalent to Z, per RFC 9557.
Implementations§
§impl PiecesNumericOffset
impl PiecesNumericOffset
pub fn offset(&self) -> Offset
pub fn offset(&self) -> Offset
Returns the numeric offset.
§Example
use jiff::{
fmt::temporal::{Pieces, PiecesOffset},
tz::Offset,
};
let pieces = Pieces::parse("1970-01-01T00:00:00-05:30")?;
let off = match pieces.offset().unwrap() {
PiecesOffset::Numeric(off) => off,
_ => unreachable!(),
};
// This is really only useful if you care that an actual
// numeric offset was written and not, e.g., `Z`. Otherwise,
// you could just use `PiecesOffset::to_numeric_offset`.
assert_eq!(
off.offset(),
Offset::from_seconds(-5 * 60 * 60 - 30 * 60).unwrap(),
);
pub fn is_negative(&self) -> bool
pub fn is_negative(&self) -> bool
Returns whether the sign of the offset is negative or not.
When formatting a Pieces to a string, this is only used to
determine the rendered sign when the Offset is itself zero. In
all other cases, the sign rendered matches the sign of the Offset.
Since Offset does not keep track of a sign when its value is zero,
when using the From<Offset> trait implementation for this type,
is_negative is always set to false when the offset is zero.
§Example
use jiff::{
fmt::temporal::{Pieces, PiecesOffset},
tz::Offset,
};
let pieces = Pieces::parse("1970-01-01T00:00:00-00:00")?;
let off = match pieces.offset().unwrap() {
PiecesOffset::Numeric(off) => off,
_ => unreachable!(),
};
// The numeric offset component in this case is
// indistiguisable from `Offset::UTC`. This is
// because an `Offset` does not use different
// representations for negative and positive zero.
assert_eq!(off.offset(), Offset::UTC);
// This is where `is_negative` comes in handy:
assert_eq!(off.is_negative(), true);
pub fn with_negative_zero(self) -> PiecesNumericOffset
pub fn with_negative_zero(self) -> PiecesNumericOffset
Sets this numeric offset to use -00:00 if and only if the offset
is zero.
§Example
use jiff::{
fmt::temporal::{Pieces, PiecesNumericOffset},
tz::Offset,
Timestamp,
};
// If you create a `Pieces` from a `Timestamp` with a UTC offset,
// then this is interpreted as "the offset from UTC is known and is
// zero."
let pieces = Pieces::from((Timestamp::UNIX_EPOCH, Offset::UTC));
assert_eq!(pieces.to_string(), "1970-01-01T00:00:00+00:00");
// Otherwise, if you create a `Pieces` from just a `Timestamp` with
// no offset, then it is interpreted as "the offset from UTC is not
// known." Typically, this is rendered with `Z` for "Zulu":
let pieces = Pieces::from(Timestamp::UNIX_EPOCH);
assert_eq!(pieces.to_string(), "1970-01-01T00:00:00Z");
// But it might be the case that you want to use `-00:00` instead,
// perhaps to conform to some existing convention or legacy
// applications that require it:
let pieces = Pieces::from(Timestamp::UNIX_EPOCH)
.with_offset(
PiecesNumericOffset::from(Offset::UTC).with_negative_zero(),
);
assert_eq!(pieces.to_string(), "1970-01-01T00:00:00-00:00");Trait Implementations§
§impl Clone for PiecesNumericOffset
impl Clone for PiecesNumericOffset
§fn clone(&self) -> PiecesNumericOffset
fn clone(&self) -> PiecesNumericOffset
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for PiecesNumericOffset
impl Debug for PiecesNumericOffset
§impl From<Offset> for PiecesNumericOffset
impl From<Offset> for PiecesNumericOffset
§fn from(offset: Offset) -> PiecesNumericOffset
fn from(offset: Offset) -> PiecesNumericOffset
§impl From<PiecesNumericOffset> for PiecesOffset
impl From<PiecesNumericOffset> for PiecesOffset
§fn from(offset: PiecesNumericOffset) -> PiecesOffset
fn from(offset: PiecesNumericOffset) -> PiecesOffset
§impl Hash for PiecesNumericOffset
impl Hash for PiecesNumericOffset
§impl PartialEq for PiecesNumericOffset
impl PartialEq for PiecesNumericOffset
impl Copy for PiecesNumericOffset
impl Eq for PiecesNumericOffset
impl StructuralPartialEq for PiecesNumericOffset
Auto Trait Implementations§
impl Freeze for PiecesNumericOffset
impl RefUnwindSafe for PiecesNumericOffset
impl Send for PiecesNumericOffset
impl Sync for PiecesNumericOffset
impl Unpin for PiecesNumericOffset
impl UnwindSafe for PiecesNumericOffset
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§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);