#![cfg_attr(feature = "radix", doc = " - [`write_radix`]")]
#![cfg_attr(feature = "radix", doc = " - [`parse_radix`]")]
#![cfg_attr(feature = "format", doc = " - [`parse_format`]")]
#![cfg_attr(all(feature = "format", feature = "radix"), doc = " - [`parse_format_radix`]")]
#![cfg_attr(feature = "radix", doc = " - [`parse_partial_radix`]")]
#![cfg_attr(feature = "format", doc = " - [`parse_partial_format`]")]
#![cfg_attr(all(feature = "format", feature = "radix"), doc = " - [`parse_partial_format_radix`]")]
#![cfg_attr(feature = "radix", doc = " - [`parse_lossy_radix`]")]
#![cfg_attr(feature = "format", doc = " - [`parse_lossy_format`]")]
#![cfg_attr(all(feature = "format", feature = "radix"), doc = " - [`parse_lossy_format_radix`]")]
#![cfg_attr(feature = "radix", doc = " - [`parse_partial_lossy_radix`]")]
#![cfg_attr(feature = "format", doc = " - [`parse_partial_lossy_format`]")]
#![cfg_attr(all(feature = "format", feature = "radix"), doc = " - [`parse_partial_lossy_format_radix`]")]
#![cfg_attr(feature = "radix", doc = " - [`get_exponent_backup_char`]")]
#![cfg_attr(all(feature = "correct", feature = "rounding"), doc = " - [`get_float_rounding`]")]
#![cfg_attr(feature = "radix", doc = " - [`set_exponent_backup_char`]")]
#![cfg_attr(all(feature = "correct", feature = "rounding"), doc = " - [`set_float_rounding`]")]
#![cfg_attr(feature = "radix", doc = " [`write_radix`]: fn.write_radix.html")]
#![cfg_attr(feature = "radix", doc = " [`parse_radix`]: fn.parse_radix.html")]
#![cfg_attr(feature = "format", doc = " [`parse_format`]: fn.parse_format.html")]
#![cfg_attr(all(feature = "format", feature = "radix"), doc = " [`parse_format_radix`]: fn.parse_format_radix.html")]
#![cfg_attr(feature = "radix", doc = " [`parse_partial_radix`]: fn.parse_partial_radix.html")]
#![cfg_attr(feature = "format", doc = " [`parse_partial_format`]: fn.parse_partial_format.html")]
#![cfg_attr(all(feature = "format", feature = "radix"), doc = " [`parse_partial_format_radix`]: fn.parse_partial_format_radix.html")]
#![cfg_attr(feature = "radix", doc = " [`parse_lossy_radix`]: fn.parse_lossy_radix.html")]
#![cfg_attr(feature = "format", doc = " [`parse_lossy_format`]: fn.parse_lossy_format.html")]
#![cfg_attr(all(feature = "format", feature = "radix"), doc = " [`parse_lossy_format_radix`]: fn.parse_lossy_format_radix.html")]
#![cfg_attr(feature = "radix", doc = " [`parse_partial_lossy_radix`]: fn.parse_partial_lossy_radix.html")]
#![cfg_attr(feature = "format", doc = " [`parse_partial_lossy_format`]: fn.parse_partial_lossy_format.html")]
#![cfg_attr(all(feature = "format", feature = "radix"), doc = " [`parse_partial_lossy_format_radix`]: fn.parse_partial_lossy_format_radix.html")]
#![cfg_attr(feature = "radix", doc = " [`get_exponent_backup_char`]: fn.get_exponent_backup_char.html")]
#![cfg_attr(all(feature = "correct", feature = "rounding"), doc = " [`get_float_rounding`]: fn.get_float_rounding.html")]
#![cfg_attr(feature = "radix", doc = " [`set_exponent_backup_char`]: fn.set_exponent_backup_char.html")]
#![cfg_attr(all(feature = "correct", feature = "rounding"), doc = " [`set_float_rounding`]: fn.set_float_rounding.html")]
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(all(not(feature = "std"), feature = "correct", feature = "radix"), feature(alloc))]
#![cfg_attr(not(feature = "std"), feature(core_intrinsics))]
#[macro_use]
extern crate bitflags;
#[macro_use]
extern crate cfg_if;
#[cfg(any(feature = "correct", feature = "format"))]
#[allow(unused_imports)] #[macro_use]
extern crate static_assertions;
#[cfg(test)]
#[macro_use]
extern crate approx;
#[cfg(test)]
#[macro_use]
extern crate quickcheck;
#[cfg(all(test, feature = "std"))]
#[macro_use]
extern crate proptest;
#[cfg(all(not(feature = "std"), feature = "correct", feature = "radix"))]
#[cfg_attr(test, macro_use)]
extern crate alloc;
#[cfg(feature = "correct")]
extern crate arrayvec;
#[cfg(all(feature = "grisu3", feature = "ryu"))]
compile_error!("Lexical only accepts one of the following backends: `grisu3` or `ryu`.");
cfg_if! {
if #[cfg(feature = "grisu3")] {
extern crate dtoa;
} else if #[cfg(feature = "ryu")] {
extern crate ryu;
}}
pub(crate) mod lib {
#[cfg(feature = "std")]
pub(crate) use std::*;
#[cfg(not(feature = "std"))]
pub(crate) use core::*;
cfg_if! {
if #[cfg(all(feature = "correct", feature = "radix"))] {
#[cfg(feature = "std")]
pub(crate) use std::vec::Vec;
#[cfg(not(feature = "std"))]
pub(crate) use alloc::vec::Vec;
}}
}
#[macro_use]
mod util;
mod atof;
mod atoi;
mod float;
mod ftoa;
mod itoa;
pub use util::*;
#[inline]
pub fn write<'a, N: ToLexical>(n: N, bytes: &'a mut [u8])
-> &'a mut [u8]
{
n.to_lexical(bytes)
}
#[inline]
#[cfg(feature = "radix")]
pub fn write_radix<'a, N: ToLexical>(n: N, radix: u8, bytes: &'a mut [u8])
-> &'a mut [u8]
{
n.to_lexical_radix(radix, bytes)
}
#[inline]
pub fn parse<N: FromLexical>(bytes: &[u8])
-> Result<N>
{
N::from_lexical(bytes)
}
#[inline]
pub fn parse_partial<N: FromLexical>(bytes: &[u8])
-> Result<(N, usize)>
{
N::from_lexical_partial(bytes)
}
#[inline]
pub fn parse_lossy<N: FromLexicalLossy>(bytes: &[u8])
-> Result<N>
{
N::from_lexical_lossy(bytes)
}
#[inline]
pub fn parse_partial_lossy<N: FromLexicalLossy>(bytes: &[u8])
-> Result<(N, usize)>
{
N::from_lexical_partial_lossy(bytes)
}
#[inline]
#[cfg(feature = "radix")]
pub fn parse_radix<N: FromLexical>(bytes: &[u8], radix: u8)
-> Result<N>
{
N::from_lexical_radix(bytes, radix)
}
#[inline]
#[cfg(feature = "radix")]
pub fn parse_partial_radix<N: FromLexical>(bytes: &[u8], radix: u8)
-> Result<(N, usize)>
{
N::from_lexical_partial_radix(bytes, radix)
}
#[inline]
#[cfg(feature = "radix")]
pub fn parse_lossy_radix<N: FromLexicalLossy>(bytes: &[u8], radix: u8)
-> Result<N>
{
N::from_lexical_lossy_radix(bytes, radix)
}
#[inline]
#[cfg(feature = "radix")]
pub fn parse_partial_lossy_radix<N: FromLexicalLossy>(bytes: &[u8], radix: u8)
-> Result<(N, usize)>
{
N::from_lexical_partial_lossy_radix(bytes, radix)
}
#[inline]
#[cfg(feature = "format")]
pub fn parse_format<N: FromLexicalFormat>(bytes: &[u8], format: NumberFormat)
-> Result<N>
{
N::from_lexical_format(bytes, format)
}
#[inline]
#[cfg(feature = "format")]
pub fn parse_partial_format<N: FromLexicalFormat>(bytes: &[u8], format: NumberFormat)
-> Result<(N, usize)>
{
N::from_lexical_partial_format(bytes, format)
}
#[inline]
#[cfg(feature = "format")]
pub fn parse_lossy_format<N: FromLexicalLossyFormat>(bytes: &[u8], format: NumberFormat)
-> Result<N>
{
N::from_lexical_lossy_format(bytes, format)
}
#[inline]
#[cfg(feature = "format")]
pub fn parse_partial_lossy_format<N: FromLexicalLossyFormat>(bytes: &[u8], format: NumberFormat)
-> Result<(N, usize)>
{
N::from_lexical_partial_lossy_format(bytes, format)
}
#[inline]
#[cfg(all(feature = "radix", feature = "format"))]
pub fn parse_format_radix<N: FromLexicalFormat>(bytes: &[u8], radix: u8, format: NumberFormat)
-> Result<N>
{
N::from_lexical_format_radix(bytes, radix, format)
}
#[inline]
#[cfg(all(feature = "radix", feature = "format"))]
pub fn parse_partial_format_radix<N: FromLexicalFormat>(bytes: &[u8], radix: u8, format: NumberFormat)
-> Result<(N, usize)>
{
N::from_lexical_partial_format_radix(bytes, radix, format)
}
#[inline]
#[cfg(all(feature = "radix", feature = "format"))]
pub fn parse_lossy_format_radix<N: FromLexicalLossyFormat>(bytes: &[u8], radix: u8, format: NumberFormat)
-> Result<N>
{
N::from_lexical_lossy_format_radix(bytes, radix, format)
}
#[inline]
#[cfg(all(feature = "radix", feature = "format"))]
pub fn parse_partial_lossy_format_radix<N: FromLexicalLossyFormat>(bytes: &[u8], radix: u8, format: NumberFormat)
-> Result<(N, usize)>
{
N::from_lexical_partial_lossy_format_radix(bytes, radix, format)
}