    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68

    //! 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;