NumberFormatBuilder

Struct NumberFormatBuilder 

Source
pub struct NumberFormatBuilder { /* private fields */ }
Expand description

Validating builder for NumberFormat from the provided specifications.

Some of the core functionality includes support for:

  • Digit separators: ignored characters used to make numbers more readable, such as 100,000.
  • Non-decimal radixes: writing or parsing numbers written in binary, hexadecimal, or other bases.
  • Special numbers: disabling support for special floating-point, such as NaN.
  • Number components: require signs, significant digits, and more.

Returns NumberFormat on calling build_strict if it was able to compile the format, otherwise, returns None.

§Examples

To create a format valid for Rust number literals, we can use the builder API:

use core::num;

use lexical_util::{NumberFormat, NumberFormatBuilder};

// create the format for literal Rust floats
const RUST: u128 = NumberFormatBuilder::new()
   .digit_separator(num::NonZeroU8::new(b'_'))
   .required_digits(true)
   .no_positive_mantissa_sign(true)
   .no_special(true)
   .internal_digit_separator(true)
   .trailing_digit_separator(true)
   .consecutive_digit_separator(true)
   .build_strict();

// then, access the formats's properties
let format = NumberFormat::<{ RUST }> {};
assert!(format.no_positive_mantissa_sign());
assert!(format.no_special());
assert!(format.internal_digit_separator());
assert!(format.trailing_digit_separator());
assert!(format.consecutive_digit_separator());
assert!(!format.no_exponent_notation());

§Fields

§Write Integer Fields

No fields are used for writing integers.

§Parse Integer Fields

These fields are used for parsing integers:

§Write Float Fields

These fields are used for writing floats:

§Parse Float Fields

These fields are used for parsing floats:

Implementations§

Source§

impl NumberFormatBuilder

Source

pub const fn new() -> NumberFormatBuilder

Source

pub const fn binary() -> u128

Create number format for standard, binary number.

Source

pub const fn octal() -> u128

Create number format for standard, octal number.

Source

pub const fn decimal() -> u128

Create number format for standard, decimal number.

Source

pub const fn hexadecimal() -> u128

Create number format for standard, hexadecimal number.

Source

pub const fn from_radix(radix: u8) -> u128

Create number format from radix.

This function will never fail even if the radix is invalid. It is up to the caller to ensure the format is valid using NumberFormat::is_valid. Only radixes from 2 to 36 should be used.

Source

pub const fn get_digit_separator(&self) -> Option<NonZero<u8>>

Get the digit separator for the number format.

Digit separators are frequently used in number literals to group digits: 1,000,000 is a lot more readable than 1000000, but the , characters should be ignored in the parsing of the number.

Can only be modified with feature format. Defaults to None, or no digit separators allowed.

§Examples

Using a digit separator of _ (note that the validity oh where a digit separator can appear depends on the other digit separator flags).

InputValid?
1✔️
1_4✔️
+_14✔️
+14e3_5✔️
1_d
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_mantissa_radix(&self) -> u8

Get the radix for mantissa digits.

This is only used for the significant digits, that is, the integral and fractional components. Can only be modified with feature power-of-two or radix. Defaults to 10.

RadixStringNumber
2“10011010010”1234
3“1200201”1234
8“2322”1234
10“1234”1234
16“4d2”1234
31“18p”1234
§Used For
  • Parse Float
  • Parse Integer
  • Write Float
  • Write Integer
Source

pub const fn get_exponent_base(&self) -> Option<NonZero<u8>>

Get the radix for the exponent.

For example, in 1.234e3, it means 1.234 * 10^3, and the exponent base here is 10. Some programming languages, like C, support hex floats with an exponent base of 2, for example 0x1.8p3, or 1.5 * 2^3. Defaults to 10. Can only be modified with feature power-of-two or radix. Defaults to 10.

§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_exponent_radix(&self) -> Option<NonZero<u8>>

Get the radix for exponent digits.

This is only used for the exponent digits. We assume the radix for the significant digits (get_mantissa_radix) is 10 as is the exponent base. Defaults to 10. Can only be modified with feature power-of-two or radix. Defaults to 10.

RadixStringNumber
2“1.234^1100”1.234e9
3“1.234^110”1.234e9
8“1.234^14”1.234e9
10“1.234^12”1.234e9
16“1.234^c”1.234e9
31“1.234^c”1.234e9
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_base_prefix(&self) -> Option<NonZero<u8>>

Get the optional character for the base prefix.

This character will come after a leading zero, so for example setting the base prefix to x means that a leading 0x will be ignore, if present. Can only be modified with feature power-of-two or radix along with format. Defaults to None, or no base prefix allowed.

§Examples

Using a base prefix of x.

InputValid?
0x1✔️
x1
1✔️
1x
1x1
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_base_suffix(&self) -> Option<NonZero<u8>>

Get the optional character for the base suffix.

This character will at the end of the buffer, so for example setting the base prefix to x means that a trailing x will be ignored, if present. Can only be modified with feature power-of-two or radix along with format. Defaults to None, or no base suffix allowed.

§Examples

Using a base suffix of x.

InputValid?
1✔️
1x✔️
1d
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_required_integer_digits(&self) -> bool

Get if digits are required before the decimal point.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1.1✔️
0.1✔️
1✔️
.1
§Used For
  • Parse Float
Source

pub const fn get_required_fraction_digits(&self) -> bool

Get if digits are required after the decimal point, if the decimal point is present.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1.1✔️
1✔️
1.
§Used For
  • Parse Float
Source

pub const fn get_required_exponent_digits(&self) -> bool

Get if digits are required after the exponent character, if the exponent is present.

Can only be modified with feature format. Defaults to true.

§Examples
InputValid?
1.1e+3✔️
1.1e3✔️
1.1e+
1.1e
§Used For
  • Parse Float
Source

pub const fn get_required_mantissa_digits(&self) -> bool

Get if at least 1 significant digit is required.

If not required, then values like . (0) are valid, but empty strings are still invalid. Can only be modified with feature format. Defaults to true.

§Examples
InputValid?
1.1✔️
.✔️
e10✔️
.e10✔️
§Used For
  • Parse Float
Source

pub const fn get_no_positive_mantissa_sign(&self) -> bool

Get if a positive sign before the mantissa is not allowed.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1.1✔️
-1.1✔️
+1.1
§Used For
  • Parse Float
  • Parse Integer
  • Write Float
Source

pub const fn get_required_mantissa_sign(&self) -> bool

Get if a sign symbol before the mantissa is required.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1.1
-1.1✔️
+1.1✔️
§Used For
  • Parse Float
  • Parse Integer
  • Write Float
Source

pub const fn get_no_exponent_notation(&self) -> bool

Get if exponent notation is not allowed.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1✔️
1.1✔️
1.1e
1.1e5
§Used For
  • Parse Float
  • Write Float
Source

pub const fn get_no_positive_exponent_sign(&self) -> bool

Get if a positive sign before the exponent is not allowed.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1.1e3✔️
1.1e-3✔️
1.1e+3
§Used For
  • Parse Float
  • Write Float
Source

pub const fn get_required_exponent_sign(&self) -> bool

Get if a sign symbol before the exponent is required.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1.1e3
1.1e-3✔️
1.1e+3✔️
§Used For
  • Parse Float
  • Write Float
Source

pub const fn get_no_exponent_without_fraction(&self) -> bool

Get if an exponent without fraction is not allowed.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1e3
1.e3
1.1e✔️
.1e3✔️
§Used For
  • Parse Float
Source

pub const fn get_no_special(&self) -> bool

Get if special (non-finite) values are not allowed.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
NaN
inf
-Infinity
1.1e✔️
§Used For
  • Parse Float
Source

pub const fn get_case_sensitive_special(&self) -> bool

Get if special (non-finite) values are case-sensitive.

If set to true, then NaN and nan are treated as the same value (Not a Number). Can only be modified with feature format. Defaults to false.

§Used For
  • Parse Float
Source

pub const fn get_no_integer_leading_zeros(&self) -> bool

Get if leading zeros before an integer are not allowed.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
01
0✔️
10✔️
§Used For
  • Parse Integer
Source

pub const fn get_no_float_leading_zeros(&self) -> bool

Get if leading zeros before a float are not allowed.

This is before the significant digits of the float, that is, if there is 1 or more digits in the integral component and the leading digit is 0, Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
01
01.0
0✔️
10✔️
0.1✔️
§Used For
  • Parse Float
Source

pub const fn get_required_exponent_notation(&self) -> bool

Get if exponent notation is required.

Can only be modified with feature format. Defaults to false.

§Examples
InputValid?
1
1.0
1e3✔️
1.1e3✔️
§Used For
  • Parse Float
  • Write Float
Source

pub const fn get_case_sensitive_exponent(&self) -> bool

Get if exponent characters are case-sensitive.

If set to true, then the exponent character e would be considered the different from E. Can only be modified with feature format. Defaults to false.

§Used For
  • Parse Float
Source

pub const fn get_case_sensitive_base_prefix(&self) -> bool

Get if base prefixes are case-sensitive.

If set to true, then the base prefix x would be considered the different from X. Can only be modified with feature power-of-two or radix along with format. Defaults to false.

§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_case_sensitive_base_suffix(&self) -> bool

Get if base suffixes are case-sensitive.

If set to true, then the base suffix x would be considered the different from X. Can only be modified with feature power-of-two or radix along with format. Defaults to false.

§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_integer_internal_digit_separator(&self) -> bool

Get if digit separators are allowed between integer digits.

This will not consider an input of only the digit separator to be a valid separator: the digit separator must be surrounded by digits. Can only be modified with feature format. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1✔️
_
1_1✔️
1_
_1
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_fraction_internal_digit_separator(&self) -> bool

Get if digit separators are allowed between fraction digits.

This will not consider an input of only the digit separator to be a valid separator: the digit separator must be surrounded by digits. Can only be modified with feature format. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1✔️
1._
1.1_1✔️
1.1_
1._1
§Used For
  • Parse Float
Source

pub const fn get_exponent_internal_digit_separator(&self) -> bool

Get if digit separators are allowed between exponent digits.

This will not consider an input of only the digit separator to be a valid separator: the digit separator must be surrounded by digits. Can only be modified with feature format. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1e1✔️
1.1e_
1.1e1_1✔️
1.1e1_
1.1e_1
§Used For
  • Parse Float
Source

pub const fn get_integer_leading_digit_separator(&self) -> bool

Get if a digit separator is allowed before any integer digits.

This will consider an input of only the digit separator to be a identical to empty input. Can only be modified with feature format. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1✔️
_
1_1
1_
_1✔️
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_fraction_leading_digit_separator(&self) -> bool

Get if a digit separator is allowed before any fraction digits.

This will consider an input of only the digit separator to be a identical to empty input. Can only be modified with feature format. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1✔️
1._
1.1_1
1.1_
1._1✔️
§Used For
  • Parse Float
Source

pub const fn get_exponent_leading_digit_separator(&self) -> bool

Get if a digit separator is allowed before any exponent digits.

This will consider an input of only the digit separator to be a identical to empty input. Can only be modified with feature format. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1e1✔️
1.1e_
1.1e1_1
1.1e1_
1.1e_1✔️
§Used For
  • Parse Float
Source

pub const fn get_integer_trailing_digit_separator(&self) -> bool

Get if a digit separator is allowed after any integer digits.

This will consider an input of only the digit separator to be a identical to empty input. Can only be modified with feature format. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1✔️
_
1_1
1_✔️
_1
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_fraction_trailing_digit_separator(&self) -> bool

Get if a digit separator is allowed after any fraction digits.

This will consider an input of only the digit separator to be a identical to empty input. Can only be modified with feature format. Defaults to false. # Examples

Using a digit separator of _.

InputValid?
1.1✔️
1._
1.1_1
1.1_✔️
1._1
§Used For
  • Parse Float
Source

pub const fn get_exponent_trailing_digit_separator(&self) -> bool

Get if a digit separator is allowed after any exponent digits.

This will consider an input of only the digit separator to be a identical to empty input. Can only be modified with feature format. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1e1✔️
1.1e_
1.1e1_1
1.1e1_✔️
1.1e_1
§Used For
  • Parse Float
Source

pub const fn get_integer_consecutive_digit_separator(&self) -> bool

Get if multiple consecutive integer digit separators are allowed.

That is, using _ as a digit separator __ would be allowed where any digit separators (leading, trailing, internal) are allowed in the integer. Can only be modified with feature format. Defaults to false.

§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn get_fraction_consecutive_digit_separator(&self) -> bool

Get if multiple consecutive fraction digit separators are allowed.

That is, using _ as a digit separator __ would be allowed where any digit separators (leading, trailing, internal) are allowed in the fraction. Can only be modified with feature format. Defaults to false.

§Used For
  • Parse Float
Source

pub const fn get_exponent_consecutive_digit_separator(&self) -> bool

Get if multiple consecutive exponent digit separators are allowed.

That is, using _ as a digit separator __ would be allowed where any digit separators (leading, trailing, internal) are allowed in the exponent. Can only be modified with feature format. Defaults to false.

§Used For
  • Parse Float
Source

pub const fn get_special_digit_separator(&self) -> bool

Get if any digit separators are allowed in special (non-finite) values.

This enables leading, trailing, internal, and consecutive digit separators for any special floats: for example, N__a_N_ is considered the same as NaN. Can only be modified with feature format. Defaults to false.

§Used For
  • Parse Float
Source

pub const fn digit_separator( self, character: Option<NonZero<u8>>, ) -> NumberFormatBuilder

Set the digit separator for the number format.

Digit separators are frequently used in number literals to group digits: 1,000,000 is a lot more readable than 1000000, but the , characters should be ignored in the parsing of the number.

Defaults to None, or no digit separators allowed.

§Examples

Using a digit separator of _ (note that the validity oh where a digit separator can appear depends on the other digit separator flags).

InputValid?
1✔️
1_4✔️
+_14✔️
+14e3_5✔️
1_d
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn radix(self, radix: u8) -> NumberFormatBuilder

Alias for mantissa radix.

§Used For
  • Parse Float
  • Parse Integer
  • Write Float
  • Write Integer
Source

pub const fn mantissa_radix(self, radix: u8) -> NumberFormatBuilder

Set the radix for mantissa digits.

This is only used for the significant digits, that is, the integral and fractional components. Defaults to 10.

RadixStringNumber
2“10011010010”1234
3“1200201”1234
8“2322”1234
10“1234”1234
16“4d2”1234
31“18p”1234
§Used For
  • Parse Float
  • Parse Integer
  • Write Float
  • Write Integer
Source

pub const fn exponent_base( self, base: Option<NonZero<u8>>, ) -> NumberFormatBuilder

Set the radix for the exponent.

For example, in 1.234e3, it means 1.234 * 10^3, and the exponent base here is 10. Some programming languages, like C, support hex floats with an exponent base of 2, for example 0x1.8p3, or 1.5 * 2^3. Defaults to 10.

§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn exponent_radix( self, radix: Option<NonZero<u8>>, ) -> NumberFormatBuilder

Set the radix for exponent digits.

This is only used for the exponent digits. We assume the radix for the significant digits (mantissa_radix) is 10 as is the exponent base. Defaults to 10.

RadixStringNumber
2“1.234^1100”1.234e9
3“1.234^110”1.234e9
8“1.234^14”1.234e9
10“1.234^12”1.234e9
16“1.234^c”1.234e9
31“1.234^c”1.234e9
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn base_prefix( self, base_prefix: Option<NonZero<u8>>, ) -> NumberFormatBuilder

Set the optional character for the base prefix.

This character will come after a leading zero, so for example setting the base prefix to x means that a leading 0x will be ignore, if present. Defaults to None, or no base prefix allowed.

§Examples

Using a base prefix of x.

InputValid?
0x1✔️
x1
1✔️
1x
1x1
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn base_suffix( self, base_suffix: Option<NonZero<u8>>, ) -> NumberFormatBuilder

Set the optional character for the base suffix.

This character will at the end of the buffer, so for example setting the base prefix to x means that a trailing x will be ignored, if present. Defaults to None, or no base suffix allowed.

§Examples

Using a base suffix of x.

InputValid?
1✔️
1x✔️
1d
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn required_integer_digits(self, flag: bool) -> NumberFormatBuilder

Set if digits are required before the decimal point.

Defaults to false.

§Examples
InputValid?
1.1✔️
0.1✔️
1✔️
.1
1.
§Used For
  • Parse Float
Source

pub const fn required_fraction_digits(self, flag: bool) -> NumberFormatBuilder

Set if digits are required after the decimal point, if the decimal point is present.

Defaults to false.

§Examples
InputValid?
1.1✔️
0.1✔️
1✔️
.1✔️
1.
§Used For
  • Parse Float
Source

pub const fn required_exponent_digits(self, flag: bool) -> NumberFormatBuilder

Set if digits are required after the exponent character, if the exponent is present.

Defaults to true.

§Examples
InputValid?
1.1e+3✔️
1.1e3✔️
1.1e+
1.1e
§Used For
  • Parse Float
Source

pub const fn required_mantissa_digits(self, flag: bool) -> NumberFormatBuilder

Set if at least 1 significant digit is required.

If not required, then values like . (0) are valid, but empty strings are still invalid. Defaults to true.

§Examples
InputValid?
1.1✔️
.✔️
e10
.e10
§Used For
  • Parse Float
Source

pub const fn required_digits(self, flag: bool) -> NumberFormatBuilder

Set if digits are required for all float components.

Note that digits are always required for integers. Defaults to requiring digits only for the mantissa and exponent.

§Examples
InputValid?
1.1✔️
1.1e3✔️
1.1e✔️
0.1✔️
.1
1.
e10
.1e10
§Used For
  • Parse Float
Source

pub const fn no_positive_mantissa_sign(self, flag: bool) -> NumberFormatBuilder

Set if a positive sign before the mantissa is not allowed.

Defaults to false.

§Examples
InputValid?
1.1✔️
-1.1✔️
+1.1
§Used For
  • Parse Float
  • Parse Integer
  • Write Float
Source

pub const fn required_mantissa_sign(self, flag: bool) -> NumberFormatBuilder

Set if a sign symbol before the mantissa is required.

Defaults to false.

§Examples
InputValid?
1.1
-1.1✔️
+1.1✔️
§Used For
  • Parse Float
  • Parse Integer
  • Write Float
  • Write Integer
Source

pub const fn no_exponent_notation(self, flag: bool) -> NumberFormatBuilder

Set if exponent notation is not allowed.

Defaults to false.

§Examples
InputValid?
1✔️
1.1✔️
1.1e
1.1e5
§Used For
  • Parse Float
  • Write Float
Source

pub const fn no_positive_exponent_sign(self, flag: bool) -> NumberFormatBuilder

Set if a positive sign before the exponent is not allowed.

Defaults to false.

§Examples
InputValid?
1.1e3✔️
1.1e-3✔️
1.1e+3
§Used For
  • Parse Float
  • Write Float
Source

pub const fn required_exponent_sign(self, flag: bool) -> NumberFormatBuilder

Set if a sign symbol before the exponent is required.

Defaults to false.

§Examples
InputValid?
1.1e3
1.1e-3✔️
1.1e+3✔️
§Used For
  • Parse Float
  • Write Float
Source

pub const fn no_exponent_without_fraction( self, flag: bool, ) -> NumberFormatBuilder

Set if an exponent without fraction is not allowed.

Defaults to false.

§Examples
InputValid?
1e3
1.e3✔️
1.1e✔️
.1e3✔️
§Used For
  • Parse Float
Source

pub const fn no_special(self, flag: bool) -> NumberFormatBuilder

Set if special (non-finite) values are not allowed.

Defaults to false.

§Examples
InputValid?
NaN
inf
-Infinity
1.1e3✔️
§Used For
  • Parse Float
Source

pub const fn case_sensitive_special(self, flag: bool) -> NumberFormatBuilder

Set if special (non-finite) values are case-sensitive.

If set to true, then NaN and nan are treated as the same value (Not a Number). Defaults to false.

§Examples
InputValid?
nan
NaN✔️
inf✔️
Inf
§Used For
  • Parse Float
Source

pub const fn no_integer_leading_zeros(self, flag: bool) -> NumberFormatBuilder

Set if leading zeros before an integer are not allowed.

Defaults to false.

§Examples
InputValid?
01
0✔️
10✔️
§Used For
  • Parse Integer
Source

pub const fn no_float_leading_zeros(self, flag: bool) -> NumberFormatBuilder

Set if leading zeros before a float are not allowed.

This is before the significant digits of the float, that is, if there is 1 or more digits in the integral component and the leading digit is 0, Defaults to false.

§Examples
InputValid?
01
01.0
0✔️
10✔️
0.1✔️
§Used For
  • Parse Float
Source

pub const fn required_exponent_notation(self, flag: bool) -> NumberFormatBuilder

Set if exponent notation is required.

Defaults to false.

§Examples
InputValid?
1
1.0
1e3✔️
1.1e3✔️
§Used For
  • Parse Float
  • Write Float
Source

pub const fn case_sensitive_exponent(self, flag: bool) -> NumberFormatBuilder

Set if exponent characters are case-sensitive.

If set to true, then the exponent character e would be considered the different from E. Defaults to false.

§Examples
InputValid?
1.1✔️
1.1e3✔️
1.1E3
§Used For
  • Parse Float
Source

pub const fn case_sensitive_base_prefix(self, flag: bool) -> NumberFormatBuilder

Set if base prefixes are case-sensitive.

If set to true, then the base prefix x would be considered the different from X. Defaults to false.

§Examples

Using a base prefix of x.

InputValid?
0x1✔️
0X1
1✔️
1x
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn case_sensitive_base_suffix(self, flag: bool) -> NumberFormatBuilder

Set if base suffixes are case-sensitive.

If set to true, then the base suffix x would be considered the different from X. Defaults to false.

§Examples

Using a base prefix of x.

InputValid?
1✔️
1x✔️
1X
1d
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn integer_internal_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if digit separators are allowed between integer digits.

This will not consider an input of only the digit separator to be a valid separator: the digit separator must be surrounded by digits. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1✔️
_
1_1✔️
1_
_1
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn fraction_internal_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if digit separators are allowed between fraction digits.

This will not consider an input of only the digit separator to be a valid separator: the digit separator must be surrounded by digits. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1✔️
1._
1.1_1✔️
1.1_
1._1
§Used For
  • Parse Float
Source

pub const fn exponent_internal_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if digit separators are allowed between exponent digits.

This will not consider an input of only the digit separator to be a valid separator: the digit separator must be surrounded by digits. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1e1✔️
1.1e_
1.1e1_1✔️
1.1e1_
1.1e_1
§Used For
  • Parse Float
Source

pub const fn internal_digit_separator(self, flag: bool) -> NumberFormatBuilder

Set all internal digit separator flags.

This will not consider an input of only the digit separator to be a valid separator: the digit separator must be surrounded by digits. Sets integer_internal_digit_separator, fraction_internal_digit_separator, and exponent_internal_digit_separator.

Source

pub const fn integer_leading_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if a digit separator is allowed before any integer digits.

This will consider an input of only the digit separator to be a identical to empty input. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1✔️
_
1_1
1_
_1✔️
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn fraction_leading_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if a digit separator is allowed before any fraction digits.

This will consider an input of only the digit separator to be a identical to empty input. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1✔️
1._✔️
1.1_1
1.1_
1._1✔️
§Used For
  • Parse Float
Source

pub const fn exponent_leading_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if a digit separator is allowed before any exponent digits.

This will consider an input of only the digit separator to be a identical to empty input. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1e1✔️
1.1e_
1.1e1_1
1.1e1_
1.1e_1✔️
§Used For
  • Parse Float
Source

pub const fn leading_digit_separator(self, flag: bool) -> NumberFormatBuilder

Set all leading digit separator flags.

This will consider an input of only the digit separator to be a identical to empty input. Sets integer_leading_digit_separator, fraction_leading_digit_separator, and exponent_leading_digit_separator.

Source

pub const fn integer_trailing_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if a digit separator is allowed after any integer digits.

This will consider an input of only the digit separator to be a identical to empty input. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1✔️
_
1_1
1_✔️
_1
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn fraction_trailing_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if a digit separator is allowed after any fraction digits.

This will consider an input of only the digit separator to be a identical to empty input. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1✔️
1._✔️
1.1_1
1.1_✔️
1._1
§Used For
  • Parse Float
Source

pub const fn exponent_trailing_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if a digit separator is allowed after any exponent digits.

This will consider an input of only the digit separator to be a identical to empty input. Defaults to false.

§Examples

Using a digit separator of _.

InputValid?
1.1e1✔️
1.1e_
1.1e1_1
1.1e1_✔️
1.1e_1
§Used For
  • Parse Float
Source

pub const fn trailing_digit_separator(self, flag: bool) -> NumberFormatBuilder

Set all trailing digit separator flags.

This will consider an input of only the digit separator to be a identical to empty input. Sets integer_trailing_digit_separator, fraction_trailing_digit_separator, and exponent_trailing_digit_separator.

Source

pub const fn integer_consecutive_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if multiple consecutive integer digit separators are allowed.

That is, using _ as a digit separator __ would be allowed where any digit separators (leading, trailing, internal) are allowed in the integer. Defaults to false.

§Examples

Using a digit separator of _ with only internal integer digit separators being valid.

InputValid?
1✔️
_
1_1✔️
1__1✔️
1_
_1
§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn fraction_consecutive_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if multiple consecutive fraction digit separators are allowed.

That is, using _ as a digit separator __ would be allowed where any digit separators (leading, trailing, internal) are allowed in the fraction. Defaults to false.

§Examples

Using a digit separator of _ with only internal fraction digit separators being valid.

InputValid?
1.1✔️
1._
1.1_1✔️
1.1__1✔️
1.1_
1._1
§Used For
  • Parse Float
Source

pub const fn exponent_consecutive_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Set if multiple consecutive exponent digit separators are allowed.

That is, using _ as a digit separator __ would be allowed where any digit separators (leading, trailing, internal) are allowed in the exponent. Defaults to false.

§Examples

Using a digit separator of _ with only internal exponent digit separators being valid.

InputValid?
1.1e1✔️
1.1e_
1.1e1_1✔️
1.1e1__1✔️
1.1e1_
1.1e_1
§Used For
  • Parse Float
Source

pub const fn consecutive_digit_separator( self, flag: bool, ) -> NumberFormatBuilder

Source

pub const fn special_digit_separator(self, flag: bool) -> NumberFormatBuilder

Set if any digit separators are allowed in special (non-finite) values.

This enables leading, trailing, internal, and consecutive digit separators for any special floats: for example, N__a_N_ is considered the same as NaN. Defaults to false.

Using a digit separator of _.

InputValid?
nan✔️
na_n✔️
na_n_✔️
na_nx
§Used For
  • Parse Float
Source

pub const fn digit_separator_flags(self, flag: bool) -> NumberFormatBuilder

Allow digit separators in all locations for all components.

This enables leading, trailing, internal, and consecutive digit separators for the integer, fraction, and exponent components. Defaults to false.

§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn integer_digit_separator_flags( self, flag: bool, ) -> NumberFormatBuilder

Set all integer digit separator flag masks.

This enables leading, trailing, internal, and consecutive digit separators for the integer component. Defaults to false.

§Used For
  • Parse Float
  • Parse Integer
Source

pub const fn fraction_digit_separator_flags( self, flag: bool, ) -> NumberFormatBuilder

Set all fraction digit separator flag masks.

This enables leading, trailing, internal, and consecutive digit separators for the fraction component. Defaults to false.

§Used For
  • Parse Float
Source

pub const fn exponent_digit_separator_flags( self, flag: bool, ) -> NumberFormatBuilder

Set all exponent digit separator flag masks.

This enables leading, trailing, internal, and consecutive digit separators for the exponent component. Defaults to false.

§Used For
  • Parse Float
Source

pub const fn build_unchecked(&self) -> u128

Create 128-bit, packed number format struct from builder options.

This function will never fail. It is up to the caller to ensure the format is valid using NumberFormat::is_valid.

Source

pub const fn build_strict(&self) -> u128

Build the packed number format, panicking if the builder is invalid.

§Panics

If the built format is not valid. This should always be used within a const context to avoid panics at runtime.

Source

pub const fn build(&self) -> u128

👎Deprecated: Use build_strict or build_unchecked instead.

Create 128-bit, packed number format struct from builder options.

This function will never fail. It is up to the caller to ensure the format is valid using NumberFormat::is_valid. This function is soft-deprecated and you should prefer build_unchecked and handle if the result is invalid instead, or use build_strict to panic on any errors. This exists when compatibility with older Rust versions was required.

Source

pub const fn rebuild(format: u128) -> NumberFormatBuilder

Re-create builder from format.

Trait Implementations§

Source§

impl Default for NumberFormatBuilder

Source§

fn default() -> NumberFormatBuilder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.