Struct SpanParser
pub struct SpanParser { /* private fields */ }Expand description
A parser for Temporal durations.
Note that in Jiff, a “Temporal duration” is called a “span.”
See the fmt::temporal module documentation for
more information on the specific format used.
§Example
This example shows how to parse a Span from a byte string. (That is,
&[u8] and not a &str.)
use jiff::{fmt::temporal::SpanParser, ToSpan};
// A parser can be created in a const context.
static PARSER: SpanParser = SpanParser::new();
let span = PARSER.parse_span(b"P3y7m25dT7h36m")?;
assert_eq!(
span,
3.years().months(7).days(25).hours(7).minutes(36).fieldwise(),
);
Implementations§
§impl SpanParser
impl SpanParser
pub const fn new() -> SpanParser
pub const fn new() -> SpanParser
Create a new Temporal datetime printer with the default configuration.
pub fn parse_span<I>(&self, input: I) -> Result<Span, Error>
pub fn parse_span<I>(&self, input: I) -> Result<Span, Error>
Parse a span string into a Span value.
§Errors
This returns an error if the span string given is invalid or if it is valid but doesn’t fit in the span range supported by Jiff.
§Example
This shows a basic example of using this routine.
use jiff::{fmt::temporal::SpanParser, ToSpan};
static PARSER: SpanParser = SpanParser::new();
let span = PARSER.parse_span(b"PT48m")?;
assert_eq!(span, 48.minutes().fieldwise());
Note that unless you need to parse a span from a byte string,
at time of writing, there is no other advantage to using this
parser directly. It is likely more convenient to just use the
FromStr trait implementation on Span:
use jiff::{Span, ToSpan};
let span = "PT48m".parse::<Span>()?;
assert_eq!(span, 48.minutes().fieldwise());
pub fn parse_duration<I>(&self, input: I) -> Result<SignedDuration, Error>
pub fn parse_duration<I>(&self, input: I) -> Result<SignedDuration, Error>
Parse an ISO 8601 duration string into a SignedDuration value.
§Errors
This returns an error if the span string given is invalid or if it is
valid but can’t be converted to a SignedDuration. This can occur
when the parsed time exceeds the minimum and maximum SignedDuration
values, or if there are any non-zero units greater than hours.
§Example
This shows a basic example of using this routine.
use jiff::{fmt::temporal::SpanParser, SignedDuration};
static PARSER: SpanParser = SpanParser::new();
let duration = PARSER.parse_duration(b"PT48m")?;
assert_eq!(duration, SignedDuration::from_mins(48));
Note that unless you need to parse a span from a byte string,
at time of writing, there is no other advantage to using this
parser directly. It is likely more convenient to just use
the FromStr trait implementation on
SignedDuration:
use jiff::SignedDuration;
let duration = "PT48m".parse::<SignedDuration>()?;
assert_eq!(duration, SignedDuration::from_mins(48));
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SpanParser
impl RefUnwindSafe for SpanParser
impl Send for SpanParser
impl Sync for SpanParser
impl Unpin for SpanParser
impl UnwindSafe for SpanParser
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
§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);