This little macro is able to perform some trivial conversions over arbitrary sequences of literal values, generating a continuous byte array at the compile time.
List of supported literals:
'?'
) as well as UTF-8 strings ("こんにちは世界"
).-99u32
).
default-big-endian
feature.9000: LE
or 0x8u32: be
.-3.1415926f64
).
default-big-endian
feature.0.22: LE
or -10f64: be
.``` use bytify::bytify;
fn main() { assert_eq!(&bytify!( "The 🎂 is a lie!", 2948509150, -559038801: BE, 0.36658e+8, -2583.1f64: le, )[..], &[ b'T', b'h', b'e', b' ', 0xF0, 0x9F, 0x8E, 0x82, b' ', b'i', b's', b' ', b'a', b' ', b'l', b'i', b'e', b'!', 0xDE, 0xAD, 0xBE, 0xAF, 0xDE, 0xAD, 0xBE, 0xAF, 0xD4, 0xD6, 0x0B, 0x4C, 0x33, 0x33, 0x33, 0x33, 0x33, 0x2e, 0xa4, 0xc0, ][..]); } ```
While proc_macro2
is on its way to stabilization, proc-macro-hack
is used instead to bring this macro to stable Rust.