7 releases

0.3.1 Jul 3, 2020
0.3.0 Apr 21, 2020
0.2.3 Mar 21, 2020
0.1.0 Feb 24, 2020

#1761 in Parser implementations

Download history 9/week @ 2024-11-08 13/week @ 2024-11-15 23/week @ 2024-11-22 22/week @ 2024-11-29 52/week @ 2024-12-06 43/week @ 2024-12-13 5/week @ 2024-12-20 2/week @ 2024-12-27 9/week @ 2025-01-03 28/week @ 2025-01-10 25/week @ 2025-01-17 14/week @ 2025-01-24 15/week @ 2025-01-31 28/week @ 2025-02-07 162/week @ 2025-02-14

209 downloads per month
Used in 4 crates (2 directly)

MIT/Apache

27KB
510 lines

Hexponent

A library to parse hexadecimal floating point numbers.

Documentation

Documentation can be found at https://docs.rs/hexponent/

Todo

See issues

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

Hexponent

Hexponent is a hexadecimal literal parser for Rust based on the C11 specification section 6.4.4.2.

use hexponent::FloatLiteral;
let float_repr: FloatLiteral = "0x3.4".parse().unwrap();
let value = float_repr.convert::<f32>().inner();
assert_eq!(value, 3.25);

Hexponent has a minimum supported rust version of 1.34.

Features

  • No dependencies
  • Non-UTF-8 parser
  • Precision warnings
  • no_std support (MSRV 1.36.0)

Differences from the specification

There are two places where hexponent differs from the C11 specificaiton.

  • An exponent is not required. (0x1.2 is allowed)
  • floating-suffix is not parsed. (0x1p4l is not allowed)

no_std support

no_std support can be enabled by disabling the default std feature for hexponent in your Cargo.toml.

hexponent = {version = "0.2", default-features = false}

no_std support is only possible in rustc version 1.36.0 and higher.

Disabling the std feature currently only disables the std::error::Error implementation for ParseError.

No runtime deps