Skip to main content

bytes

Macro bytes 

Source
bytes!() { /* proc-macro */ }
Expand description

Bytes converts literals into an array of bytes.

Currently supports only integer literals of unbounded size.

Supported literal forms:

  • Base 16 (hex), e.g. 0xff
  • Base 2 (binary), e.g. 0b11111111

Leading zeros are preserved. Zeros on the front of the number are preserved as zeros in the final bytes. For example: 0x0001 will produce [0, 1].

Decimal and octal literal forms are not supported.

This macro is intended for small byte inputs. There is no arbitrary limit, but very large inputs may result in long compilation times. For large amounts of bytes, store the bytes in a file and use include_bytes! instead.

ยงExamples

let bytes = bytes_lit::bytes!(0x1);
assert_eq!(bytes, [1]);
let bytes = bytes_lit::bytes!(0xfded3f55dec47250a52a8c0bb7038e72fa6ffaae33562f77cd2b629ef7fd424d);
assert_eq!(bytes, [
    253, 237, 63, 85, 222, 196, 114, 80, 165, 42, 140, 11, 183, 3, 142, 114,
    250, 111, 250, 174, 51, 86, 47, 119, 205, 43, 98, 158, 247, 253, 66, 77,
]);
let bytes = bytes_lit::bytes!(0x00000000dec47250a52a8c0bb7038e72fa6ffaae33562f77cd2b629ef7fd424d);
assert_eq!(bytes, [
    0, 0, 0, 0, 222, 196, 114, 80, 165, 42, 140, 11, 183, 3, 142, 114,
    250, 111, 250, 174, 51, 86, 47, 119, 205, 43, 98, 158, 247, 253, 66, 77,
]);