#hex #bytes #fmt

no-std const-hex

Fast byte array to hex string conversion

8 stable releases

1.5.0 May 18, 2023
1.4.0 May 15, 2023

#47 in Value formatting

Download history 104/week @ 2023-04-30 102/week @ 2023-05-07 428/week @ 2023-05-14 214/week @ 2023-05-21 484/week @ 2023-05-28

1,228 downloads per month

MIT/Apache

39KB
645 lines

const-hex

github crates.io docs.rs build status

This crate provides a fast conversion of byte arrays to hexadecimal strings, both at compile time, and at run time.

Extends the hex crate's implementation with const-eval, a const-generics formatting buffer, similar to itoa's, and more.

Version requirement: rustc 1.64+

Performance

This crate is ~10 times faster than hex in encoding, and 30+ times faster than libstd in formatting.

You can run the following benchmarks with cargo bench on a nightly compiler.

test encode_const_hex::bench1_32   ... bench:           1 ns/iter (+/- 0)
test encode_const_hex::bench2_128  ... bench:           5 ns/iter (+/- 0)
test encode_const_hex::bench3_4096 ... bench:         204 ns/iter (+/- 9)
test encode_hex::bench1_32         ... bench:          15 ns/iter (+/- 1)
test encode_hex::bench2_128        ... bench:          60 ns/iter (+/- 2)
test encode_hex::bench3_4096       ... bench:       1,703 ns/iter (+/- 50)
test format_const_hex::bench1_32   ... bench:          15 ns/iter (+/- 0)
test format_const_hex::bench2_128  ... bench:          20 ns/iter (+/- 0)
test format_const_hex::bench3_4096 ... bench:         380 ns/iter (+/- 9)
test format_std::bench1_32         ... bench:         470 ns/iter (+/- 4)
test format_std::bench2_128        ... bench:       1,961 ns/iter (+/- 17)
test format_std::bench3_4096       ... bench:      61,688 ns/iter (+/- 1,994)

Acknowledgements

  • hex for the initial encoding/decoding implementations
  • dtolnay/itoa for the initial crate/library API layout

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

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

Dependencies

~80KB