| //! Fast, minimal float-parsing algorithm. |
| //! |
| //! minimal-lexical has a simple, high-level API with a single |
| //! exported function: [`parse_float`]. |
| //! |
| //! [`parse_float`] expects a forward iterator for the integer |
| //! and fraction digits, as well as a parsed exponent as an [`i32`]. |
| //! |
| //! For more examples, please see [simple-example](https://github.com/Alexhuszagh/minimal-lexical/blob/master/examples/simple.rs). |
| //! |
| //! EXAMPLES |
| //! -------- |
| //! |
| //! ``` |
| //! extern crate minimal_lexical; |
| //! |
| //! // Let's say we want to parse "1.2345". |
| //! // First, we need an external parser to extract the integer digits ("1"), |
| //! // the fraction digits ("2345"), and then parse the exponent to a 32-bit |
| //! // integer (0). |
| //! // Warning: |
| //! // -------- |
| //! // Please note that leading zeros must be trimmed from the integer, |
| //! // and trailing zeros must be trimmed from the fraction. This cannot |
| //! // be handled by minimal-lexical, since we accept iterators. |
| //! let integer = b"1"; |
| //! let fraction = b"2345"; |
| //! let float: f64 = minimal_lexical::parse_float(integer.iter(), fraction.iter(), 0); |
| //! println!("float={:?}", float); // 1.235 |
| //! ``` |
| //! |
| //! [`parse_float`]: fn.parse_float.html |
| //! [`i32`]: https://doc.rust-lang.org/stable/std/primitive.i32.html |
| |
| // FEATURES |
| |
| // We want to have the same safety guarantees as Rust core, |
| // so we allow unused unsafe to clearly document safety guarantees. |
| #![allow(unused_unsafe)] |
| #![cfg_attr(feature = "lint", warn(unsafe_op_in_unsafe_fn))] |
| #![cfg_attr(not(feature = "std"), no_std)] |
| |
| #[cfg(all(feature = "alloc", not(feature = "std")))] |
| extern crate alloc; |
| |
| pub mod bellerophon; |
| pub mod bigint; |
| pub mod extended_float; |
| pub mod fpu; |
| pub mod heapvec; |
| pub mod lemire; |
| pub mod libm; |
| pub mod mask; |
| pub mod num; |
| pub mod number; |
| pub mod parse; |
| pub mod rounding; |
| pub mod slow; |
| pub mod stackvec; |
| pub mod table; |
| |
| mod table_bellerophon; |
| mod table_lemire; |
| mod table_small; |
| |
| // API |
| pub use self::num::Float; |
| pub use self::parse::parse_float; |