use core::fmt;
use crate::format::BigFormat;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ParseOptions {
pub radix: u8,
pub format: BigFormat,
pub allow_hex_prefix: bool,
pub allow_binary_prefix: bool,
pub allow_octal_prefix: bool,
pub allow_nan_inf: bool,
pub return_radix_exponent: bool,
}
impl ParseOptions {
pub fn auto_radix() -> Self {
Self {
allow_hex_prefix: true,
allow_binary_prefix: true,
allow_octal_prefix: true,
..Self::default()
}
}
}
impl Default for ParseOptions {
fn default() -> Self {
Self {
radix: 10,
format: BigFormat::default(),
allow_hex_prefix: false,
allow_binary_prefix: false,
allow_octal_prefix: false,
allow_nan_inf: true,
return_radix_exponent: false,
}
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ParseFloatError {
_priv: (),
}
impl ParseFloatError {
pub(crate) const fn new() -> Self {
Self { _priv: () }
}
}
impl fmt::Display for ParseFloatError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str("invalid floating point literal")
}
}
#[cfg(feature = "std")]
impl std::error::Error for ParseFloatError {}