pub struct Builder { /* private fields */ }
Expand description
Builder for a numeric formatter.
Implementations§
Source§impl Builder
impl Builder
Sourcepub fn fill(self, param: char) -> Self
pub fn fill(self, param: char) -> Self
When width
is greater than the actual rendered width of the number, the excess is padded
with this character.
§Note
Wide characters are counted according to their quantity, not their bit width.
let heart = '🖤';
assert_eq!(heart.len_utf8(), 4);
let fmt = NumFmt::builder().fill(heart).width(3).build();
let formatted = fmt.fmt(1).unwrap();
assert_eq!(formatted, "🖤🖤1");
// Note that even though we requested a width of 3, the binary length is 9.
assert_eq!(formatted.len(), 9);
Sourcepub fn align(self, param: Align) -> Self
pub fn align(self, param: Align) -> Self
Set the alignment of rendering within allotted width
. See Align
.
Sourcepub fn hash(self, set: bool) -> Self
pub fn hash(self, set: bool) -> Self
If a set
, print a base specification before the number
according to its format.
See Builder::format
.
- binary:
0b
- octal:
0o
- decimal:
0d
- hex:
0x
Corresponds to the #
format specifier.
Sourcepub fn zero(self, set: bool) -> Self
pub fn zero(self, set: bool) -> Self
If set
, engage the zero handler.
The zero handler overrides the padding specification to 0
, and
treats pad characters as part of the number, in contrast
to the default behavior which treats them as arbitrary spacing.
Only valid with Align::Right
and Align::Decimal
.
§Examples
// sign handling
assert_eq!(NumFmt::from_str("03").unwrap().fmt(-1).unwrap(), "-01");
assert_eq!(NumFmt::from_str("0>3").unwrap().fmt(-1).unwrap(), "0-1");
// separator handling
assert_eq!(NumFmt::from_str("0>7,").unwrap().fmt(1).unwrap(), "0000001");
assert_eq!(NumFmt::from_str("07,").unwrap().fmt(1).unwrap(), "000,001");
Sourcepub fn width(self, param: usize) -> Self
pub fn width(self, param: usize) -> Self
Set the width
parameter.
This is a parameter for the “minimum width” that the format should take up. If
the value’s string does not fill up this many characters, then the padding
specified by fill/alignment will be used to take up the required space (see
Builder::fill
).
The width can be set dynamically:
assert_eq!(NumFmt::from_str("-^").unwrap().fmt_with(1, Dynamic::width(5)).unwrap(), "--1--");
Note: with Align::Right
, this is the minimum width of the entire rendered field,
not just the portion before the decimal. To set the width before the decimal,
use Align::Decimal
.
assert_eq!(NumFmt::from_str( "05").unwrap().fmt(1.1).unwrap(), "001.1");
assert_eq!(NumFmt::from_str(">05").unwrap().fmt(1.1).unwrap(), "001.1");
assert_eq!(NumFmt::from_str("v05").unwrap().fmt(1.1).unwrap(), "00001.1");
Sourcepub fn precision(self, param: Option<usize>) -> Self
pub fn precision(self, param: Option<usize>) -> Self
Set the precision
parameter.
How many digits after the decimal point are printed. Note that integers can be forced to emit decimal places with this modifier.
Precision will pad or truncate as required if set. If unset, passes through as many digits past the decimal as the underlying type naturally returns.
assert_eq!(NumFmt::from_str(".2").unwrap().fmt(3.14159).unwrap(), "3.14");
assert_eq!(NumFmt::from_str(".7").unwrap().fmt(3.14159).unwrap(), "3.1415900");
If the requested precision exceeds the native precision available to this number,
the remainder is always filled with '0'
, even if fill
is specified:
assert_eq!(NumFmt::from_str("-<6.2").unwrap().fmt(1.0_f32).unwrap(), "1.00--");
Sourcepub fn separator(self, param: Option<char>) -> Self
pub fn separator(self, param: Option<char>) -> Self
Set the separator.
A separator is a (typically non-numeric) character inserted between groups of digits to make it easier for humans to parse the number when reading. Different separators may be desirable in different contexts.
Sourcepub fn spacing(self, param: usize) -> Self
pub fn spacing(self, param: usize) -> Self
Set the spacing.
Spacing determines the number of characters in each character group. It is only of interest when the separator is set. The default spacing is 3.
Sourcepub fn decimal_separator(self, param: char) -> Self
pub fn decimal_separator(self, param: char) -> Self
Set the decimal separator.
This can be desirable to i.e. support German number formats, which use a .
to separate
numeric groups and a ,
as a decimal separator.
Trait Implementations§
impl Eq for Builder
impl StructuralPartialEq for Builder
Auto Trait Implementations§
impl Freeze for Builder
impl RefUnwindSafe for Builder
impl Send for Builder
impl Sync for Builder
impl Unpin for Builder
impl UnwindSafe for Builder
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more