1 | //! Fast, minimal float-parsing algorithm. |
2 | //! |
3 | //! minimal-lexical has a simple, high-level API with a single |
4 | //! exported function: [`parse_float`]. |
5 | //! |
6 | //! [`parse_float`] expects a forward iterator for the integer |
7 | //! and fraction digits, as well as a parsed exponent as an [`i32`]. |
8 | //! |
9 | //! For more examples, please see [simple-example](https://github.com/Alexhuszagh/minimal-lexical/blob/master/examples/simple.rs). |
10 | //! |
11 | //! EXAMPLES |
12 | //! -------- |
13 | //! |
14 | //! ``` |
15 | //! extern crate minimal_lexical; |
16 | //! |
17 | //! // Let's say we want to parse "1.2345". |
18 | //! // First, we need an external parser to extract the integer digits ("1"), |
19 | //! // the fraction digits ("2345"), and then parse the exponent to a 32-bit |
20 | //! // integer (0). |
21 | //! // Warning: |
22 | //! // -------- |
23 | //! // Please note that leading zeros must be trimmed from the integer, |
24 | //! // and trailing zeros must be trimmed from the fraction. This cannot |
25 | //! // be handled by minimal-lexical, since we accept iterators. |
26 | //! let integer = b"1" ; |
27 | //! let fraction = b"2345" ; |
28 | //! let float: f64 = minimal_lexical::parse_float(integer.iter(), fraction.iter(), 0); |
29 | //! println!("float={:?}" , float); // 1.235 |
30 | //! ``` |
31 | //! |
32 | //! [`parse_float`]: fn.parse_float.html |
33 | //! [`i32`]: https://doc.rust-lang.org/stable/std/primitive.i32.html |
34 | |
35 | // FEATURES |
36 | |
37 | // We want to have the same safety guarantees as Rust core, |
38 | // so we allow unused unsafe to clearly document safety guarantees. |
39 | #![allow (unused_unsafe)] |
40 | #![cfg_attr (feature = "lint" , warn(unsafe_op_in_unsafe_fn))] |
41 | #![cfg_attr (not(feature = "std" ), no_std)] |
42 | |
43 | #[cfg (all(feature = "alloc" , not(feature = "std" )))] |
44 | extern crate alloc; |
45 | |
46 | pub mod bellerophon; |
47 | pub mod bigint; |
48 | pub mod extended_float; |
49 | pub mod fpu; |
50 | pub mod heapvec; |
51 | pub mod lemire; |
52 | pub mod libm; |
53 | pub mod mask; |
54 | pub mod num; |
55 | pub mod number; |
56 | pub mod parse; |
57 | pub mod rounding; |
58 | pub mod slow; |
59 | pub mod stackvec; |
60 | pub mod table; |
61 | |
62 | mod table_bellerophon; |
63 | mod table_lemire; |
64 | mod table_small; |
65 | |
66 | // API |
67 | pub use self::num::Float; |
68 | pub use self::parse::parse_float; |
69 | |