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

#1580 in Parser implementations

Download history 48/week @ 2023-11-20 52/week @ 2023-11-27 33/week @ 2023-12-04 78/week @ 2023-12-11 27/week @ 2023-12-18 36/week @ 2023-12-25 11/week @ 2024-01-01 39/week @ 2024-01-08 22/week @ 2024-01-15 51/week @ 2024-01-22 22/week @ 2024-01-29 33/week @ 2024-02-05 46/week @ 2024-02-12 50/week @ 2024-02-19 83/week @ 2024-02-26 43/week @ 2024-03-04

225 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