1#![cfg_attr(
54 feature = "format",
55 doc = "
56- [`RUST_LITERAL`]: Number format for a [`Rust`] literal floating-point number.
57- [`RUST_STRING`]: Number format to parse a [`Rust`] float from string.
58- [`PYTHON_LITERAL`]: Number format for a [`Python`] literal floating-point number.
59- [`PYTHON_STRING`]: Number format to parse a [`Python`] float from string.
60- [`PYTHON3_LITERAL`]: Number format for a [`Python3`] literal floating-point number.
61- [`PYTHON3_STRING`]: Number format to parse a [`Python3`] float from string.
62- [`PYTHON36_LITERAL`]: Number format for a [`Python3.6`] or higher literal floating-point number.
63- [`PYTHON35_LITERAL`]: Number format for a [`Python3.5`] or lower literal floating-point number.
64- [`PYTHON2_LITERAL`]: Number format for a [`Python2`] literal floating-point number.
65- [`PYTHON2_STRING`]: Number format to parse a [`Python2`] float from string.
66- [`CXX_LITERAL`]: Number format for a [`C++`] literal floating-point number.
67- [`CXX_STRING`]: Number format to parse a [`C++`] float from string.
68"
69)]
70#![cfg_attr(
71 all(feature = "format", feature = "power-of-two"),
72 doc = "
73- [`CXX_HEX_LITERAL`]: Number format for a [`C++`] literal hexadecimal floating-point number.
74- [`CXX_HEX_STRING`]: Number format to parse a [`C++`] hexadecimal float from string.
75"
76)]
77#![cfg_attr(
78 feature = "format",
79 doc = "
80- [`CXX20_LITERAL`]: Number format for a [`C++20`] literal floating-point number.
81- [`CXX20_STRING`]: Number format for a [`C++20`] string floating-point number.
82"
83)]
84#![cfg_attr(
85 all(feature = "format", feature = "power-of-two"),
86 doc = "
87- [`CXX20_HEX_LITERAL`]: Number format for a [`C++20`] literal hexadecimal floating-point number.
88- [`CXX20_HEX_STRING`]: Number format for a [`C++20`] string hexadecimal floating-point number.
89"
90)]
91#![cfg_attr(
92 feature = "format",
93 doc = "
94- [`CXX17_LITERAL`]: Number format for a [`C++17`] literal floating-point number.
95- [`CXX17_STRING`]: Number format for a [`C++17`] string floating-point number.
96"
97)]
98#![cfg_attr(
99 all(feature = "format", feature = "power-of-two"),
100 doc = "
101- [`CXX17_HEX_LITERAL`]: Number format for a [`C++17`] literal hexadecimal floating-point number.
102- [`CXX17_HEX_STRING`]: Number format for a [`C++17`] string hexadecimal floating-point number.
103"
104)]
105#![cfg_attr(
106 feature = "format",
107 doc = "
108- [`CXX14_LITERAL`]: Number format for a [`C++14`] literal floating-point number.
109- [`CXX14_STRING`]: Number format for a [`C++14`] string floating-point number.
110"
111)]
112#![cfg_attr(
113 all(feature = "format", feature = "power-of-two"),
114 doc = "
115- [`CXX14_HEX_STRING`]: Number format for a [`C++14`] string hexadecimal floating-point number.
116"
117)]
118#![cfg_attr(
119 feature = "format",
120 doc = "
121- [`CXX11_LITERAL`]: Number format for a [`C++11`] literal floating-point number.
122- [`CXX11_STRING`]: Number format for a [`C++11`] string floating-point number.
123"
124)]
125#![cfg_attr(
126 all(feature = "format", feature = "power-of-two"),
127 doc = "
128- [`CXX11_HEX_STRING`]: Number format for a [`C++11`] string hexadecimal floating-point number.
129"
130)]
131#![cfg_attr(
132 feature = "format",
133 doc = "
134- [`CXX03_LITERAL`]: Number format for a [`C++03`] literal floating-point number.
135- [`CXX03_STRING`]: Number format for a [`C++03`] string floating-point number.
136- [`CXX98_LITERAL`]: Number format for a [`C++98`] literal floating-point number.
137- [`CXX98_STRING`]: Number format for a [`C++98`] string floating-point number.
138- [`C_LITERAL`]: Number format for a [`C`] literal floating-point number.
139- [`C_STRING`]: Number format for a [`C`] string floating-point number.
140"
141)]
142#![cfg_attr(
143 all(feature = "format", feature = "power-of-two"),
144 doc = "
145- [`C_HEX_LITERAL`]: Number format for a [`C`] literal hexadecimal floating-point number.
146- [`C_HEX_STRING`]: Number format for a [`C`] string hexadecimal floating-point number.
147"
148)]
149#![cfg_attr(
150 feature = "format",
151 doc = "
152- [`C18_LITERAL`]: Number format for a [`C18`] literal floating-point number.
153- [`C18_STRING`]: Number format for a [`C18`] string floating-point number.
154"
155)]
156#![cfg_attr(
157 all(feature = "format", feature = "power-of-two"),
158 doc = "
159- [`C18_HEX_LITERAL`]: Number format for a [`C18`] literal hexadecimal floating-point number.
160- [`C18_HEX_STRING`]: Number format for a [`C18`] string hexadecimal floating-point number.
161"
162)]
163#![cfg_attr(
164 feature = "format",
165 doc = "
166- [`C11_LITERAL`]: Number format for a [`C11`] literal floating-point number.
167- [`C11_STRING`]: Number format for a [`C11`] string floating-point number.
168"
169)]
170#![cfg_attr(
171 all(feature = "format", feature = "power-of-two"),
172 doc = "
173- [`C11_HEX_LITERAL`]: Number format for a [`C11`] literal hexadecimal floating-point number.
174- [`C11_HEX_STRING`]: Number format for a [`C11`] string hexadecimal floating-point number.
175"
176)]
177#![cfg_attr(
178 feature = "format",
179 doc = "
180- [`C99_LITERAL`]: Number format for a [`C99`] literal floating-point number.
181- [`C99_STRING`]: Number format for a [`C99`] string floating-point number.
182"
183)]
184#![cfg_attr(
185 all(feature = "format", feature = "power-of-two"),
186 doc = "
187- [`C99_HEX_LITERAL`]: Number format for a [`C99`] literal hexadecimal floating-point number.
188- [`C99_HEX_STRING`]: Number format for a [`C99`] string hexadecimal floating-point number.
189"
190)]
191#![cfg_attr(
192 feature = "format",
193 doc = "
194- [`C90_LITERAL`]: Number format for a [`C90`] literal floating-point number.
195- [`C90_STRING`]: Number format for a [`C90`] string floating-point number.
196"
197)]
198#![cfg_attr(
199 all(feature = "format", feature = "power-of-two"),
200 doc = "
201- [`C90_HEX_STRING`]: Number format for a [`C90`] string hexadecimal floating-point number.
202"
203)]
204#![cfg_attr(
205 feature = "format",
206 doc = "
207- [`C89_LITERAL`]: Number format for a [`C89`] literal floating-point number.
208- [`C89_STRING`]: Number format for a [`C89`] string floating-point number.
209"
210)]
211#![cfg_attr(
212 all(feature = "format", feature = "power-of-two"),
213 doc = "
214- [`C89_HEX_STRING`]: Number format for a [`C89`] string hexadecimal floating-point number.
215"
216)]
217#![cfg_attr(
218 feature = "format",
219 doc = "
220- [`RUBY_LITERAL`]: Number format for a [`Ruby`] literal floating-point number.
221"
222)]
223#![cfg_attr(
224 all(feature = "format", feature = "power-of-two"),
225 doc = "
226- [`RUBY_OCTAL_LITERAL`]: Number format for an octal [`Ruby`] literal floating-point number.
227"
228)]
229#![cfg_attr(
230 feature = "format",
231 doc = "
232- [`RUBY_STRING`]: Number format to parse a [`Ruby`] float from string.
233- [`SWIFT_LITERAL`]: Number format for a [`Swift`] literal floating-point number.
234- [`SWIFT_STRING`]: Number format to parse a [`Swift`] float from string.
235- [`GO_LITERAL`]: Number format for a [`Golang`] literal floating-point number.
236- [`GO_STRING`]: Number format to parse a [`Golang`] float from string.
237- [`HASKELL_LITERAL`]: Number format for a [`Haskell`] literal floating-point number.
238- [`HASKELL_STRING`]: Number format to parse a [`Haskell`] float from string.
239- [`JAVASCRIPT_LITERAL`]: Number format for a [`Javascript`] literal floating-point number.
240- [`JAVASCRIPT_STRING`]: Number format to parse a [`Javascript`] float from string.
241- [`PERL_LITERAL`]: Number format for a [`Perl`] literal floating-point number.
242- [`PERL_STRING`]: Number format to parse a [`Perl`] float from string.
243- [`PHP_LITERAL`]: Number format for a [`PHP`] literal floating-point number.
244- [`PHP_STRING`]: Number format to parse a [`PHP`] float from string.
245- [`JAVA_LITERAL`]: Number format for a [`Java`] literal floating-point number.
246- [`JAVA_STRING`]: Number format to parse a [`Java`] float from string.
247- [`R_LITERAL`]: Number format for an [`R`] literal floating-point number.
248- [`R_STRING`]: Number format to parse an [`R`] float from string.
249- [`KOTLIN_LITERAL`]: Number format for a [`Kotlin`] literal floating-point number.
250- [`KOTLIN_STRING`]: Number format to parse a [`Kotlin`] float from string.
251- [`JULIA_LITERAL`]: Number format for a [`Julia`] literal floating-point number.
252- [`JULIA_STRING`]: Number format to parse a [`Julia`] float from string.
253"
254)]
255#![cfg_attr(
256 all(feature = "format", feature = "power-of-two"),
257 doc = "
258- [`JULIA_HEX_LITERAL`]: Number format for a [`Julia`] literal floating-point number.
259- [`JULIA_HEX_STRING`]: Number format to parse a [`Julia`] float from string.
260"
261)]
262#![cfg_attr(
263 feature = "format",
264 doc = "
265- [`CSHARP_LITERAL`]: Number format for a [`C#`] literal floating-point number.
266- [`CSHARP_STRING`]: Number format to parse a [`C#`] float from string.
267- [`CSHARP7_LITERAL`]: Number format for a [`C#7`] literal floating-point number.
268- [`CSHARP7_STRING`]: Number format to parse a [`C#7`] float from string.
269- [`CSHARP6_LITERAL`]: Number format for a [`C#6`] literal floating-point number.
270- [`CSHARP6_STRING`]: Number format to parse a [`C#6`] float from string.
271- [`CSHARP5_LITERAL`]: Number format for a [`C#5`] literal floating-point number.
272- [`CSHARP5_STRING`]: Number format to parse a [`C#5`] float from string.
273- [`CSHARP4_LITERAL`]: Number format for a [`C#4`] literal floating-point number.
274- [`CSHARP4_STRING`]: Number format to parse a [`C#4`] float from string.
275- [`CSHARP3_LITERAL`]: Number format for a [`C#3`] literal floating-point number.
276- [`CSHARP3_STRING`]: Number format to parse a [`C#3`] float from string.
277- [`CSHARP2_LITERAL`]: Number format for a [`C#2`] literal floating-point number.
278- [`CSHARP2_STRING`]: Number format to parse a [`C#2`] float from string.
279- [`CSHARP1_LITERAL`]: Number format for a [`C#1`] literal floating-point number.
280- [`CSHARP1_STRING`]: Number format to parse a [`C#1`] float from string.
281- [`KAWA_LITERAL`]: Number format for a [`Kawa`] literal floating-point number.
282- [`KAWA_STRING`]: Number format to parse a [`Kawa`] float from string.
283- [`GAMBITC_LITERAL`]: Number format for a [`Gambit-C`] literal floating-point number.
284- [`GAMBITC_STRING`]: Number format to parse a [`Gambit-C`] float from string.
285- [`GUILE_LITERAL`]: Number format for a [`Guile`] literal floating-point number.
286- [`GUILE_STRING`]: Number format to parse a [`Guile`] float from string.
287- [`CLOJURE_LITERAL`]: Number format for a [`Clojure`] literal floating-point number.
288- [`CLOJURE_STRING`]: Number format to parse a [`Clojure`] float from string.
289- [`ERLANG_LITERAL`]: Number format for an [`Erlang`] literal floating-point number.
290- [`ERLANG_STRING`]: Number format to parse an [`Erlang`] float from string.
291- [`ELM_LITERAL`]: Number format for an [`Elm`] literal floating-point number.
292- [`ELM_STRING`]: Number format to parse an [`Elm`] float from string.
293- [`SCALA_LITERAL`]: Number format for a [`Scala`] literal floating-point number.
294- [`SCALA_STRING`]: Number format to parse a [`Scala`] float from string.
295- [`ELIXIR_LITERAL`]: Number format for an [`Elixir`] literal floating-point number.
296- [`ELIXIR_STRING`]: Number format to parse an [`Elixir`] float from string.
297- [`FORTRAN_LITERAL`]: Number format for a [`FORTRAN`] literal floating-point number.
298- [`FORTRAN_STRING`]: Number format to parse a [`FORTRAN`] float from string.
299- [`D_LITERAL`]: Number format for a [`D`] literal floating-point number.
300- [`D_STRING`]: Number format to parse a [`D`] float from string.
301- [`COFFEESCRIPT_LITERAL`]: Number format for a [`Coffeescript`] literal floating-point number.
302- [`COFFEESCRIPT_STRING`]: Number format to parse a [`Coffeescript`] float from string.
303- [`COBOL_LITERAL`]: Number format for a [`Cobol`] literal floating-point number.
304- [`COBOL_STRING`]: Number format to parse a [`Cobol`] float from string.
305- [`FSHARP_LITERAL`]: Number format for a [`F#`] literal floating-point number.
306- [`FSHARP_STRING`]: Number format to parse a [`F#`] float from string.
307- [`VB_LITERAL`]: Number format for a [`Visual Basic`] literal floating-point number.
308- [`VB_STRING`]: Number format to parse a [`Visual Basic`] float from string.
309- [`OCAML_LITERAL`]: Number format for an [`OCaml`] literal floating-point number.
310- [`OCAML_STRING`]: Number format to parse an [`OCaml`] float from string.
311- [`OBJECTIVEC_LITERAL`]: Number format for an [`Objective-C`] literal floating-point number.
312- [`OBJECTIVEC_STRING`]: Number format to parse an [`Objective-C`] float from string.
313- [`REASONML_LITERAL`]: Number format for a [`ReasonML`] literal floating-point number.
314- [`REASONML_STRING`]: Number format to parse a [`ReasonML`] float from string.
315- [`OCTAVE_LITERAL`]: Number format for an [`Octave`] literal floating-point number.
316- [`OCTAVE_STRING`]: Number format to parse an [`Octave`] float from string.
317- [`MATLAB_LITERAL`]: Number format for an [`Matlab`] literal floating-point number.
318- [`MATLAB_STRING`]: Number format to parse an [`Matlab`] float from string.
319- [`ZIG_LITERAL`]: Number format for a [`Zig`] literal floating-point number.
320- [`ZIG_STRING`]: Number format to parse a [`Zig`] float from string.
321- [`SAGE_LITERAL`]: Number format for a [`Sage`] literal floating-point number.
322- [`SAGE_STRING`]: Number format to parse a [`Sage`] float from string.
323- [`JSON`]: Number format for a [`JSON`][`JSON-REF`] literal floating-point number.
324- [`TOML`]: Number format for a [`TOML`][`TOML-REF`] literal floating-point number.
325- [`YAML`]: Number format for a [`YAML`][`YAML-REF`] literal floating-point number.
326- [`XML`]: Number format for an [`XML`][`XML-REF`] literal floating-point number.
327- [`SQLITE`]: Number format for a [`SQLite`] literal floating-point number.
328- [`POSTGRESQL`]: Number format for a [`PostgreSQL`] literal floating-point number.
329- [`MYSQL`]: Number format for a [`MySQL`] literal floating-point number.
330- [`MONGODB`]: Number format for a [`MongoDB`] literal floating-point number.
331"
332)]
333#![cfg_attr(
335 any(feature = "parse-floats", feature = "parse-integers"),
336 doc = "[`FromLexicalWithOptions`]: crate::from_lexical_with_options"
337)]
338#![cfg_attr(
339 not(any(feature = "parse-floats", feature = "parse-integers")),
340 doc = "[`FromLexicalWithOptions`]: https://github.com/Alexhuszagh/rust-lexical/blob/c6c5052/lexical-util/src/api.rs#L45"
341)]
342#![cfg_attr(
343 any(feature = "write-floats", feature = "write-integers"),
344 doc = "[`ToLexicalWithOptions`]: crate::to_lexical_with_options"
345)]
346#![cfg_attr(
347 not(any(feature = "write-floats", feature = "write-integers")),
348 doc = "[`ToLexicalWithOptions`]: https://github.com/Alexhuszagh/rust-lexical/blob/c6c5052/lexical-util/src/api.rs#L151"
349)]
350#![cfg_attr(
559 feature = "format",
560 doc = "
561[`Rust`]: https://www.rust-lang.org/
562[`Python`]: https://www.python.org/
563[`Python3`]: https://www.python.org/
564[`Python3.6`]: https://www.python.org/downloads/release/python-360/
565[`Python3.5`]: https://www.python.org/downloads/release/python-350/
566[`Python2`]: https://www.python.org/downloads/release/python-270/
567[`C++`]: https://en.cppreference.com/w/
568[`C++20`]: https://en.cppreference.com/w/cpp/20
569[`C++17`]: https://en.cppreference.com/w/cpp/17
570[`C++14`]: https://en.cppreference.com/w/cpp/14
571[`C++11`]: https://en.cppreference.com/w/cpp/11
572[`C++03`]: https://en.wikipedia.org/wiki/C%2B%2B03
573[`C++98`]: https://en.cppreference.com/w/
574[`C`]: https://en.cppreference.com/w/c
575[`C18`]: https://en.cppreference.com/w/c/17
576[`C11`]: https://en.cppreference.com/w/c/11
577[`C99`]: https://en.cppreference.com/w/c/99
578[`C90`]: https://en.cppreference.com/w/c
579[`C89`]: https://en.cppreference.com/w/c
580[`Ruby`]: https://www.ruby-lang.org/en/
581[`Swift`]: https://developer.apple.com/swift/
582[`Golang`]: https://go.dev/
583[`Haskell`]: https://www.haskell.org/
584[`Javascript`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript
585[`Perl`]: https://www.perl.org/
586[`PHP`]: https://www.php.net/
587[`Java`]: https://www.java.com/en/
588[`R`]: https://www.r-project.org/
589[`Kotlin`]: https://kotlinlang.org/
590[`Julia`]: https://julialang.org/
591[`C#`]: https://learn.microsoft.com/en-us/dotnet/csharp/
592[`C#7`]: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-73
593[`C#6`]: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-60
594[`C#5`]: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-50
595[`C#4`]: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-40
596[`C#3`]: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-30
597[`C#2`]: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-20
598[`C#1`]: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-12-1
599[`Kawa`]: https://www.gnu.org/software/kawa/
600[`Gambit-C`]: https://gambitscheme.org/
601[`Guile`]: https://www.gnu.org/software/guile/
602[`Clojure`]: https://clojure.org/
603[`Erlang`]: https://www.erlang.org/
604[`Elm`]: https://elm-lang.org/
605[`Scala`]: https://www.scala-lang.org/
606[`Elixir`]: https://elixir-lang.org/
607[`FORTRAN`]: https://fortran-lang.org/
608[`D`]: https://dlang.org/
609[`Coffeescript`]: https://coffeescript.org/
610[`Cobol`]: https://www.ibm.com/think/topics/cobol
611[`F#`]: https://fsharp.org/
612[`Visual Basic`]: https://learn.microsoft.com/en-us/dotnet/visual-basic/
613[`OCaml`]: https://ocaml.org/
614[`Objective-C`]: https://en.wikipedia.org/wiki/Objective-C
615[`ReasonML`]: https://reasonml.github.io/
616[`Octave`]: https://octave.org/
617[`Matlab`]: https://www.mathworks.com/products/matlab.html
618[`Zig`]: https://ziglang.org/
619[`Sage`]: https://www.sagemath.org/
620[`JSON-REF`]: https://www.json.org/json-en.html
621[`TOML-REF`]: https://toml.io/en/
622[`YAML-REF`]: https://yaml.org/
623[`XML-REF`]: https://en.wikipedia.org/wiki/XML
624[`SQLite`]: https://www.sqlite.org/
625[`PostgreSQL`]: https://www.postgresql.org/
626[`MySQL`]: https://www.mysql.com/
627[`MongoDB`]: https://www.mongodb.com/
628"
629)]
630
631use crate::error::Error;
632#[cfg(feature = "format")]
633pub use crate::feature_format::*;
634pub use crate::format_builder::*;
635pub use crate::format_flags::*;
636#[cfg(not(feature = "format"))]
637pub use crate::not_feature_format::*;
638#[cfg(feature = "format")]
639pub use crate::prebuilt_formats::*;
640
641#[inline(always)]
643pub const fn format_is_valid<const FORMAT: u128>() -> bool {
644 NumberFormat::<FORMAT> {}.is_valid()
645}
646
647#[inline(always)]
652pub const fn format_error<const FORMAT: u128>() -> Error {
653 NumberFormat::<FORMAT> {}.error()
654}
655
656pub const STANDARD: u128 = NumberFormatBuilder::new().build_strict();