lexical_util/
format.rs

1//! Public API for the number format packed struct.
2//!
3//! This has a consistent API whether or not the `format` feature is
4//! enabled, however, most functionality will be disabled if the feature
5//! is not enabled.
6//!
7//! # Pre-Defined Formats
8//!
9//! These are the pre-defined formats for parsing numbers from various
10//! programming, markup, and data languages.
11//!
12//! - [STANDARD](crate::format::STANDARD)
13#![cfg_attr(feature = "format", doc = " - [RUST_LITERAL](crate::format::RUST_LITERAL)")]
14#![cfg_attr(feature = "format", doc = " - [RUST_STRING](crate::format::RUST_STRING)")]
15#![cfg_attr(feature = "format", doc = " - [PYTHON_LITERAL](crate::format::PYTHON_LITERAL)")]
16#![cfg_attr(feature = "format", doc = " - [PYTHON_STRING](crate::format::PYTHON_STRING)")]
17#![cfg_attr(feature = "format", doc = " - [PYTHON3_LITERAL](crate::format::PYTHON3_LITERAL)")]
18#![cfg_attr(feature = "format", doc = " - [PYTHON3_STRING](crate::format::PYTHON3_STRING)")]
19#![cfg_attr(feature = "format", doc = " - [PYTHON36_LITERAL](crate::format::PYTHON36_LITERAL)")]
20#![cfg_attr(feature = "format", doc = " - [PYTHON35_LITERAL](crate::format::PYTHON35_LITERAL)")]
21#![cfg_attr(feature = "format", doc = " - [PYTHON2_LITERAL](crate::format::PYTHON2_LITERAL)")]
22#![cfg_attr(feature = "format", doc = " - [PYTHON2_STRING](crate::format::PYTHON2_STRING)")]
23#![cfg_attr(feature = "format", doc = " - [CXX_LITERAL](crate::format::CXX_LITERAL)")]
24#![cfg_attr(feature = "format", doc = " - [CXX_STRING](crate::format::CXX_STRING)")]
25#![cfg_attr(
26    all(feature = "format", feature = "power-of-two"),
27    doc = " - [CXX_HEX_LITERAL](crate::format::CXX_HEX_LITERAL)"
28)]
29#![cfg_attr(
30    all(feature = "format", feature = "power-of-two"),
31    doc = " - [CXX_HEX_STRING](crate::format::CXX_HEX_STRING)"
32)]
33#![cfg_attr(feature = "format", doc = " - [CXX20_LITERAL](crate::format::CXX20_LITERAL)")]
34#![cfg_attr(feature = "format", doc = " - [CXX20_STRING](crate::format::CXX20_STRING)")]
35#![cfg_attr(
36    all(feature = "format", feature = "power-of-two"),
37    doc = " - [CXX20_HEX_LITERAL](crate::format::CXX20_HEX_LITERAL)"
38)]
39#![cfg_attr(
40    all(feature = "format", feature = "power-of-two"),
41    doc = " - [CXX20_HEX_STRING](crate::format::CXX20_HEX_STRING)"
42)]
43#![cfg_attr(feature = "format", doc = " - [CXX17_LITERAL](crate::format::CXX17_LITERAL)")]
44#![cfg_attr(feature = "format", doc = " - [CXX17_STRING](crate::format::CXX17_STRING)")]
45#![cfg_attr(
46    all(feature = "format", feature = "power-of-two"),
47    doc = " - [CXX17_HEX_LITERAL](crate::format::CXX17_HEX_LITERAL)"
48)]
49#![cfg_attr(
50    all(feature = "format", feature = "power-of-two"),
51    doc = " - [CXX17_HEX_STRING](crate::format::CXX17_HEX_STRING)"
52)]
53#![cfg_attr(feature = "format", doc = " - [CXX14_LITERAL](crate::format::CXX14_LITERAL)")]
54#![cfg_attr(feature = "format", doc = " - [CXX14_STRING](crate::format::CXX14_STRING)")]
55#![cfg_attr(
56    all(feature = "format", feature = "power-of-two"),
57    doc = " - [CXX14_HEX_STRING](crate::format::CXX14_HEX_STRING)"
58)]
59#![cfg_attr(feature = "format", doc = " - [CXX11_LITERAL](crate::format::CXX11_LITERAL)")]
60#![cfg_attr(feature = "format", doc = " - [CXX11_STRING](crate::format::CXX11_STRING)")]
61#![cfg_attr(
62    all(feature = "format", feature = "power-of-two"),
63    doc = " - [CXX11_HEX_STRING](crate::format::CXX11_HEX_STRING)"
64)]
65#![cfg_attr(feature = "format", doc = " - [CXX03_LITERAL](crate::format::CXX03_LITERAL)")]
66#![cfg_attr(feature = "format", doc = " - [CXX03_STRING](crate::format::CXX03_STRING)")]
67#![cfg_attr(feature = "format", doc = " - [CXX98_LITERAL](crate::format::CXX98_LITERAL)")]
68#![cfg_attr(feature = "format", doc = " - [CXX98_STRING](crate::format::CXX98_STRING)")]
69#![cfg_attr(feature = "format", doc = " - [C_LITERAL](crate::format::C_LITERAL)")]
70#![cfg_attr(feature = "format", doc = " - [C_STRING](crate::format::C_STRING)")]
71#![cfg_attr(
72    all(feature = "format", feature = "power-of-two"),
73    doc = " - [C_HEX_LITERAL](crate::format::C_HEX_LITERAL)"
74)]
75#![cfg_attr(
76    all(feature = "format", feature = "power-of-two"),
77    doc = " - [C_HEX_STRING](crate::format::C_HEX_STRING)"
78)]
79#![cfg_attr(feature = "format", doc = " - [C18_LITERAL](crate::format::C18_LITERAL)")]
80#![cfg_attr(feature = "format", doc = " - [C18_STRING](crate::format::C18_STRING)")]
81#![cfg_attr(
82    all(feature = "format", feature = "power-of-two"),
83    doc = " - [C18_HEX_LITERAL](crate::format::C18_HEX_LITERAL)"
84)]
85#![cfg_attr(
86    all(feature = "format", feature = "power-of-two"),
87    doc = " - [C18_HEX_STRING](crate::format::C18_HEX_STRING)"
88)]
89#![cfg_attr(feature = "format", doc = " - [C11_LITERAL](crate::format::C11_LITERAL)")]
90#![cfg_attr(feature = "format", doc = " - [C11_STRING](crate::format::C11_STRING)")]
91#![cfg_attr(
92    all(feature = "format", feature = "power-of-two"),
93    doc = " - [C11_HEX_LITERAL](crate::format::C11_HEX_LITERAL)"
94)]
95#![cfg_attr(
96    all(feature = "format", feature = "power-of-two"),
97    doc = " - [C11_HEX_STRING](crate::format::C11_HEX_STRING)"
98)]
99#![cfg_attr(feature = "format", doc = " - [C99_LITERAL](crate::format::C99_LITERAL)")]
100#![cfg_attr(feature = "format", doc = " - [C99_STRING](crate::format::C99_STRING)")]
101#![cfg_attr(
102    all(feature = "format", feature = "power-of-two"),
103    doc = " - [C99_HEX_LITERAL](crate::format::C99_HEX_LITERAL)"
104)]
105#![cfg_attr(
106    all(feature = "format", feature = "power-of-two"),
107    doc = " - [C99_HEX_STRING](crate::format::C99_HEX_STRING)"
108)]
109#![cfg_attr(feature = "format", doc = " - [C90_LITERAL](crate::format::C90_LITERAL)")]
110#![cfg_attr(feature = "format", doc = " - [C90_STRING](crate::format::C90_STRING)")]
111#![cfg_attr(
112    all(feature = "format", feature = "power-of-two"),
113    doc = " - [C90_HEX_STRING](crate::format::C90_HEX_STRING)"
114)]
115#![cfg_attr(feature = "format", doc = " - [C89_LITERAL](crate::format::C89_LITERAL)")]
116#![cfg_attr(feature = "format", doc = " - [C89_STRING](crate::format::C89_STRING)")]
117#![cfg_attr(
118    all(feature = "format", feature = "power-of-two"),
119    doc = " - [C89_HEX_STRING](crate::format::C89_HEX_STRING)"
120)]
121#![cfg_attr(feature = "format", doc = " - [RUBY_LITERAL](crate::format::RUBY_LITERAL)")]
122#![cfg_attr(
123    all(feature = "format", feature = "power-of-two"),
124    doc = " - [RUBY_OCTAL_LITERAL](crate::format::RUBY_OCTAL_LITERAL)"
125)]
126#![cfg_attr(feature = "format", doc = " - [RUBY_STRING](crate::format::RUBY_STRING)")]
127#![cfg_attr(feature = "format", doc = " - [SWIFT_LITERAL](crate::format::SWIFT_LITERAL)")]
128#![cfg_attr(feature = "format", doc = " - [SWIFT_STRING](crate::format::SWIFT_STRING)")]
129#![cfg_attr(feature = "format", doc = " - [GO_LITERAL](crate::format::GO_LITERAL)")]
130#![cfg_attr(feature = "format", doc = " - [GO_STRING](crate::format::GO_STRING)")]
131#![cfg_attr(feature = "format", doc = " - [HASKELL_LITERAL](crate::format::HASKELL_LITERAL)")]
132#![cfg_attr(feature = "format", doc = " - [HASKELL_STRING](crate::format::HASKELL_STRING)")]
133#![cfg_attr(feature = "format", doc = " - [JAVASCRIPT_LITERAL](crate::format::JAVASCRIPT_LITERAL)")]
134#![cfg_attr(feature = "format", doc = " - [JAVASCRIPT_STRING](crate::format::JAVASCRIPT_STRING)")]
135#![cfg_attr(feature = "format", doc = " - [PERL_LITERAL](crate::format::PERL_LITERAL)")]
136#![cfg_attr(feature = "format", doc = " - [PERL_STRING](crate::format::PERL_STRING)")]
137#![cfg_attr(feature = "format", doc = " - [PHP_LITERAL](crate::format::PHP_LITERAL)")]
138#![cfg_attr(feature = "format", doc = " - [PHP_STRING](crate::format::PHP_STRING)")]
139#![cfg_attr(feature = "format", doc = " - [JAVA_LITERAL](crate::format::JAVA_LITERAL)")]
140#![cfg_attr(feature = "format", doc = " - [JAVA_STRING](crate::format::JAVA_STRING)")]
141#![cfg_attr(feature = "format", doc = " - [R_LITERAL](crate::format::R_LITERAL)")]
142#![cfg_attr(feature = "format", doc = " - [R_STRING](crate::format::R_STRING)")]
143#![cfg_attr(feature = "format", doc = " - [KOTLIN_LITERAL](crate::format::KOTLIN_LITERAL)")]
144#![cfg_attr(feature = "format", doc = " - [KOTLIN_STRING](crate::format::KOTLIN_STRING)")]
145#![cfg_attr(feature = "format", doc = " - [JULIA_LITERAL](crate::format::JULIA_LITERAL)")]
146#![cfg_attr(feature = "format", doc = " - [JULIA_STRING](crate::format::JULIA_STRING)")]
147#![cfg_attr(
148    all(feature = "format", feature = "power-of-two"),
149    doc = " - [JULIA_HEX_LITERAL](crate::format::JULIA_HEX_LITERAL)"
150)]
151#![cfg_attr(
152    all(feature = "format", feature = "power-of-two"),
153    doc = " - [JULIA_HEX_STRING](crate::format::JULIA_HEX_STRING)"
154)]
155#![cfg_attr(feature = "format", doc = " - [CSHARP_LITERAL](crate::format::CSHARP_LITERAL)")]
156#![cfg_attr(feature = "format", doc = " - [CSHARP_STRING](crate::format::CSHARP_STRING)")]
157#![cfg_attr(feature = "format", doc = " - [CSHARP7_LITERAL](crate::format::CSHARP7_LITERAL)")]
158#![cfg_attr(feature = "format", doc = " - [CSHARP7_STRING](crate::format::CSHARP7_STRING)")]
159#![cfg_attr(feature = "format", doc = " - [CSHARP6_LITERAL](crate::format::CSHARP6_LITERAL)")]
160#![cfg_attr(feature = "format", doc = " - [CSHARP6_STRING](crate::format::CSHARP6_STRING)")]
161#![cfg_attr(feature = "format", doc = " - [CSHARP5_LITERAL](crate::format::CSHARP5_LITERAL)")]
162#![cfg_attr(feature = "format", doc = " - [CSHARP5_STRING](crate::format::CSHARP5_STRING)")]
163#![cfg_attr(feature = "format", doc = " - [CSHARP4_LITERAL](crate::format::CSHARP4_LITERAL)")]
164#![cfg_attr(feature = "format", doc = " - [CSHARP4_STRING](crate::format::CSHARP4_STRING)")]
165#![cfg_attr(feature = "format", doc = " - [CSHARP3_LITERAL](crate::format::CSHARP3_LITERAL)")]
166#![cfg_attr(feature = "format", doc = " - [CSHARP3_STRING](crate::format::CSHARP3_STRING)")]
167#![cfg_attr(feature = "format", doc = " - [CSHARP2_LITERAL](crate::format::CSHARP2_LITERAL)")]
168#![cfg_attr(feature = "format", doc = " - [CSHARP2_STRING](crate::format::CSHARP2_STRING)")]
169#![cfg_attr(feature = "format", doc = " - [CSHARP1_LITERAL](crate::format::CSHARP1_LITERAL)")]
170#![cfg_attr(feature = "format", doc = " - [CSHARP1_STRING](crate::format::CSHARP1_STRING)")]
171#![cfg_attr(feature = "format", doc = " - [KAWA_LITERAL](crate::format::KAWA_LITERAL)")]
172#![cfg_attr(feature = "format", doc = " - [KAWA_STRING](crate::format::KAWA_STRING)")]
173#![cfg_attr(feature = "format", doc = " - [GAMBITC_LITERAL](crate::format::GAMBITC_LITERAL)")]
174#![cfg_attr(feature = "format", doc = " - [GAMBITC_STRING](crate::format::GAMBITC_STRING)")]
175#![cfg_attr(feature = "format", doc = " - [GUILE_LITERAL](crate::format::GUILE_LITERAL)")]
176#![cfg_attr(feature = "format", doc = " - [GUILE_STRING](crate::format::GUILE_STRING)")]
177#![cfg_attr(feature = "format", doc = " - [CLOJURE_LITERAL](crate::format::CLOJURE_LITERAL)")]
178#![cfg_attr(feature = "format", doc = " - [CLOJURE_STRING](crate::format::CLOJURE_STRING)")]
179#![cfg_attr(feature = "format", doc = " - [ERLANG_LITERAL](crate::format::ERLANG_LITERAL)")]
180#![cfg_attr(feature = "format", doc = " - [ERLANG_STRING](crate::format::ERLANG_STRING)")]
181#![cfg_attr(feature = "format", doc = " - [ELM_LITERAL](crate::format::ELM_LITERAL)")]
182#![cfg_attr(feature = "format", doc = " - [ELM_STRING](crate::format::ELM_STRING)")]
183#![cfg_attr(feature = "format", doc = " - [SCALA_LITERAL](crate::format::SCALA_LITERAL)")]
184#![cfg_attr(feature = "format", doc = " - [SCALA_STRING](crate::format::SCALA_STRING)")]
185#![cfg_attr(feature = "format", doc = " - [ELIXIR_LITERAL](crate::format::ELIXIR_LITERAL)")]
186#![cfg_attr(feature = "format", doc = " - [ELIXIR_STRING](crate::format::ELIXIR_STRING)")]
187#![cfg_attr(feature = "format", doc = " - [FORTRAN_LITERAL](crate::format::FORTRAN_LITERAL)")]
188#![cfg_attr(feature = "format", doc = " - [FORTRAN_STRING](crate::format::FORTRAN_STRING)")]
189#![cfg_attr(feature = "format", doc = " - [D_LITERAL](crate::format::D_LITERAL)")]
190#![cfg_attr(feature = "format", doc = " - [D_STRING](crate::format::D_STRING)")]
191#![cfg_attr(
192    feature = "format",
193    doc = " - [COFFEESCRIPT_LITERAL](crate::format::COFFEESCRIPT_LITERAL)"
194)]
195#![cfg_attr(
196    feature = "format",
197    doc = " - [COFFEESCRIPT_STRING](crate::format::COFFEESCRIPT_STRING)"
198)]
199#![cfg_attr(feature = "format", doc = " - [COBOL_LITERAL](crate::format::COBOL_LITERAL)")]
200#![cfg_attr(feature = "format", doc = " - [COBOL_STRING](crate::format::COBOL_STRING)")]
201#![cfg_attr(feature = "format", doc = " - [FSHARP_LITERAL](crate::format::FSHARP_LITERAL)")]
202#![cfg_attr(feature = "format", doc = " - [FSHARP_STRING](crate::format::FSHARP_STRING)")]
203#![cfg_attr(feature = "format", doc = " - [VB_LITERAL](crate::format::VB_LITERAL)")]
204#![cfg_attr(feature = "format", doc = " - [VB_STRING](crate::format::VB_STRING)")]
205#![cfg_attr(feature = "format", doc = " - [OCAML_LITERAL](crate::format::OCAML_LITERAL)")]
206#![cfg_attr(feature = "format", doc = " - [OCAML_STRING](crate::format::OCAML_STRING)")]
207#![cfg_attr(feature = "format", doc = " - [OBJECTIVEC_LITERAL](crate::format::OBJECTIVEC_LITERAL)")]
208#![cfg_attr(feature = "format", doc = " - [OBJECTIVEC_STRING](crate::format::OBJECTIVEC_STRING)")]
209#![cfg_attr(feature = "format", doc = " - [REASONML_LITERAL](crate::format::REASONML_LITERAL)")]
210#![cfg_attr(feature = "format", doc = " - [REASONML_STRING](crate::format::REASONML_STRING)")]
211#![cfg_attr(feature = "format", doc = " - [OCTAVE_LITERAL](crate::format::OCTAVE_LITERAL)")]
212#![cfg_attr(feature = "format", doc = " - [OCTAVE_STRING](crate::format::OCTAVE_STRING)")]
213#![cfg_attr(feature = "format", doc = " - [MATLAB_LITERAL](crate::format::MATLAB_LITERAL)")]
214#![cfg_attr(feature = "format", doc = " - [MATLAB_STRING](crate::format::MATLAB_STRING)")]
215#![cfg_attr(feature = "format", doc = " - [ZIG_LITERAL](crate::format::ZIG_LITERAL)")]
216#![cfg_attr(feature = "format", doc = " - [ZIG_STRING](crate::format::ZIG_STRING)")]
217#![cfg_attr(feature = "format", doc = " - [SAGE_LITERAL](crate::format::SAGE_LITERAL)")]
218#![cfg_attr(feature = "format", doc = " - [SAGE_STRING](crate::format::SAGE_STRING)")]
219#![cfg_attr(feature = "format", doc = " - [JSON](crate::format::JSON)")]
220#![cfg_attr(feature = "format", doc = " - [TOML](crate::format::TOML)")]
221#![cfg_attr(feature = "format", doc = " - [YAML](crate::format::YAML)")]
222#![cfg_attr(feature = "format", doc = " - [XML](crate::format::XML)")]
223#![cfg_attr(feature = "format", doc = " - [SQLITE](crate::format::SQLITE)")]
224#![cfg_attr(feature = "format", doc = " - [POSTGRESQL](crate::format::POSTGRESQL)")]
225#![cfg_attr(feature = "format", doc = " - [MYSQL](crate::format::MYSQL)")]
226#![cfg_attr(feature = "format", doc = " - [MONGODB](crate::format::MONGODB)")]
227//!
228//! # Syntax Flags
229//!
230//! Bitflags to get and set syntax flags for the format packed struct.
231//!
232//! - [REQUIRED_INTEGER_DIGITS](crate::format::REQUIRED_INTEGER_DIGITS)
233//! - [REQUIRED_FRACTION_DIGITS](crate::format::REQUIRED_FRACTION_DIGITS)
234//! - [REQUIRED_EXPONENT_DIGITS](crate::format::REQUIRED_EXPONENT_DIGITS)
235//! - [REQUIRED_MANTISSA_DIGITS](crate::format::REQUIRED_MANTISSA_DIGITS)
236//! - [REQUIRED_DIGITS](crate::format::REQUIRED_DIGITS)
237//! - [NO_POSITIVE_MANTISSA_SIGN](crate::format::NO_POSITIVE_MANTISSA_SIGN)
238//! - [REQUIRED_MANTISSA_SIGN](crate::format::REQUIRED_MANTISSA_SIGN)
239//! - [NO_EXPONENT_NOTATION](crate::format::NO_EXPONENT_NOTATION)
240//! - [NO_POSITIVE_EXPONENT_SIGN](crate::format::NO_POSITIVE_EXPONENT_SIGN)
241//! - [REQUIRED_EXPONENT_SIGN](crate::format::REQUIRED_EXPONENT_SIGN)
242//! - [NO_EXPONENT_WITHOUT_FRACTION](crate::format::NO_EXPONENT_WITHOUT_FRACTION)
243//! - [NO_SPECIAL](crate::format::NO_SPECIAL)
244//! - [CASE_SENSITIVE_SPECIAL](crate::format::CASE_SENSITIVE_SPECIAL)
245//! - [NO_INTEGER_LEADING_ZEROS](crate::format::NO_INTEGER_LEADING_ZEROS)
246//! - [NO_FLOAT_LEADING_ZEROS](crate::format::NO_FLOAT_LEADING_ZEROS)
247//! - [REQUIRED_EXPONENT_NOTATION](crate::format::REQUIRED_EXPONENT_NOTATION)
248//! - [CASE_SENSITIVE_EXPONENT](crate::format::CASE_SENSITIVE_EXPONENT)
249//! - [CASE_SENSITIVE_BASE_PREFIX](crate::format::CASE_SENSITIVE_BASE_PREFIX)
250//! - [CASE_SENSITIVE_BASE_SUFFIX](crate::format::CASE_SENSITIVE_BASE_SUFFIX)
251//!
252//! # Digit Separator Flags
253//!
254//! Bitflags to get and set digit separators flags for the format
255//! packed struct.
256//!
257//! - [INTEGER_INTERNAL_DIGIT_SEPARATOR](crate::format::INTEGER_INTERNAL_DIGIT_SEPARATOR)
258//! - [FRACTION_INTERNAL_DIGIT_SEPARATOR](crate::format::FRACTION_INTERNAL_DIGIT_SEPARATOR)
259//! - [EXPONENT_INTERNAL_DIGIT_SEPARATOR](crate::format::EXPONENT_INTERNAL_DIGIT_SEPARATOR)
260//! - [INTEGER_LEADING_DIGIT_SEPARATOR](crate::format::INTEGER_LEADING_DIGIT_SEPARATOR)
261//! - [FRACTION_LEADING_DIGIT_SEPARATOR](crate::format::FRACTION_LEADING_DIGIT_SEPARATOR)
262//! - [EXPONENT_LEADING_DIGIT_SEPARATOR](crate::format::EXPONENT_LEADING_DIGIT_SEPARATOR)
263//! - [INTEGER_TRAILING_DIGIT_SEPARATOR](crate::format::INTEGER_TRAILING_DIGIT_SEPARATOR)
264//! - [FRACTION_TRAILING_DIGIT_SEPARATOR](crate::format::FRACTION_TRAILING_DIGIT_SEPARATOR)
265//! - [EXPONENT_TRAILING_DIGIT_SEPARATOR](crate::format::EXPONENT_TRAILING_DIGIT_SEPARATOR)
266//! - [INTEGER_CONSECUTIVE_DIGIT_SEPARATOR](crate::format::INTEGER_CONSECUTIVE_DIGIT_SEPARATOR)
267//! - [FRACTION_CONSECUTIVE_DIGIT_SEPARATOR](crate::format::FRACTION_CONSECUTIVE_DIGIT_SEPARATOR)
268//! - [EXPONENT_CONSECUTIVE_DIGIT_SEPARATOR](crate::format::EXPONENT_CONSECUTIVE_DIGIT_SEPARATOR)
269//! - [INTERNAL_DIGIT_SEPARATOR](crate::format::INTERNAL_DIGIT_SEPARATOR)
270//! - [LEADING_DIGIT_SEPARATOR](crate::format::LEADING_DIGIT_SEPARATOR)
271//! - [TRAILING_DIGIT_SEPARATOR](crate::format::TRAILING_DIGIT_SEPARATOR)
272//! - [CONSECUTIVE_DIGIT_SEPARATOR](crate::format::CONSECUTIVE_DIGIT_SEPARATOR)
273//! - [SPECIAL_DIGIT_SEPARATOR](crate::format::SPECIAL_DIGIT_SEPARATOR)
274//!
275//! # Character Shifts and Masks
276//!
277//! Bitmasks and bitshifts to get and set control characters for the format
278//! packed struct.
279//!
280//! - [DIGIT_SEPARATOR_SHIFT](crate::format::DIGIT_SEPARATOR_SHIFT)
281//! - [DIGIT_SEPARATOR](crate::format::DIGIT_SEPARATOR)
282//! - [BASE_PREFIX_SHIFT](crate::format::BASE_PREFIX_SHIFT)
283//! - [BASE_PREFIX](crate::format::BASE_PREFIX)
284//! - [BASE_SUFFIX_SHIFT](crate::format::BASE_SUFFIX_SHIFT)
285//! - [BASE_SUFFIX](crate::format::BASE_SUFFIX)
286//! - [MANTISSA_RADIX_SHIFT](crate::format::MANTISSA_RADIX_SHIFT)
287//! - [MANTISSA_RADIX](crate::format::MANTISSA_RADIX)
288//! - [RADIX_SHIFT](crate::format::RADIX_SHIFT)
289//! - [RADIX](crate::format::RADIX)
290//! - [EXPONENT_BASE_SHIFT](crate::format::EXPONENT_BASE_SHIFT)
291//! - [EXPONENT_BASE](crate::format::EXPONENT_BASE)
292//! - [EXPONENT_RADIX_SHIFT](crate::format::EXPONENT_RADIX_SHIFT)
293//! - [EXPONENT_RADIX](crate::format::EXPONENT_RADIX)
294//!
295//! # Character Functions
296//!
297//! Functions to get control characters from the format packed struct.
298//!
299//! - [digit_separator](crate::format::digit_separator)
300//! - [base_prefix](crate::format::base_prefix)
301//! - [base_suffix](crate::format::base_suffix)
302//! - [mantissa_radix](crate::format::mantissa_radix)
303//! - [exponent_base](crate::format::exponent_base)
304//! - [exponent_radix](crate::format::exponent_radix)
305//! - [radix_from_flags](crate::format::radix_from_flags)
306//!
307//! # Validators
308//!
309//! Functions to validate control characters for the format packed struct.
310//!
311//! - [is_valid_digit_separator](is_valid_digit_separator)
312//! - [is_valid_base_prefix](is_valid_base_prefix)
313//! - [is_valid_base_suffix](is_valid_base_suffix)
314//! - [is_valid_punctuation](is_valid_punctuation)
315//! - [is_valid_radix](is_valid_radix)
316
317#[cfg(feature = "format")]
318pub use crate::feature_format::*;
319pub use crate::format_builder::*;
320pub use crate::format_flags::*;
321#[cfg(not(feature = "format"))]
322pub use crate::not_feature_format::*;
323
324use crate::error::Error;
325use static_assertions::const_assert;
326
327/// Determine if the format packed struct is valid.
328#[inline]
329pub const fn format_is_valid<const FORMAT: u128>() -> bool {
330    NumberFormat::<FORMAT> {}.is_valid()
331}
332
333/// Get the error type from the format packed struct.
334///
335/// An error type of `Error::Success` means the format is valid, any
336/// other error signifies an invalid format.
337#[inline]
338pub const fn format_error<const FORMAT: u128>() -> Error {
339    NumberFormat::<FORMAT> {}.error()
340}
341
342/// Standard number format. This is identical to the Rust string format.
343pub const STANDARD: u128 = NumberFormatBuilder::new().build();
344const_assert!(NumberFormat::<{ STANDARD }> {}.is_valid());