#hex #proc-macro #literals

macro dev hex-literal

Procedural macro for converting hexadecimal string to byte array at compile time

9 releases

new 0.3.1 Aug 2, 2020
0.3.0 Jul 16, 2020
0.2.1 Aug 24, 2019
0.2.0 Apr 23, 2019
0.1.1 Feb 9, 2018

#52 in Rust patterns

Download history 8143/week @ 2020-04-13 9373/week @ 2020-04-20 8653/week @ 2020-04-27 8676/week @ 2020-05-04 9967/week @ 2020-05-11 9366/week @ 2020-05-18 10502/week @ 2020-05-25 10924/week @ 2020-06-01 11985/week @ 2020-06-08 10153/week @ 2020-06-15 8905/week @ 2020-06-22 9024/week @ 2020-06-29 9515/week @ 2020-07-06 8992/week @ 2020-07-13 10151/week @ 2020-07-20 10402/week @ 2020-07-27

42,246 downloads per month
Used in 173 crates (134 directly)

MIT/Apache

8KB
81 lines

RustCrypto: Utilities

This repository contains various utility crates used in the RustCrypto project.

License

All crates licensed under either of

at your option.

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:

This crate provides hex! macro for converting hexadecimal string literal to byte array at compile time.

It accepts the following characters in the input string:

  • '0'...'9', 'a'...'f', 'A'...'F' — hex characters which will be used in construction of the output byte array
  • ' ', '\r', '\n', '\t' — formatting characters which will be ignored

Examples

# #[macro_use] extern crate hex_literal;
const DATA: [u8; 4] = hex!("01020304");

# fn main() {
assert_eq!(DATA, [1, 2, 3, 4]);
assert_eq!(hex!("a1 b2 c3 d4"), [0xA1, 0xB2, 0xC3, 0xD4]);
assert_eq!(hex!("E5 E6 90 92"), [0xE5, 0xE6, 0x90, 0x92]);
assert_eq!(hex!("0a0B 0C0d"), [10, 11, 12, 13]);
let bytes = hex!("
    00010203 04050607
    08090a0b 0c0d0e0f
");
assert_eq!(bytes, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
# }

No runtime deps