Crates.io | bytify |
lib.rs | bytify |
version | 0.4.1 |
source | src |
created_at | 2018-03-19 22:53:20.494883 |
updated_at | 2023-10-24 21:51:57.429834 |
description | A simple macro that can write given const-expr values into a continuous byte array. |
homepage | https://github.com/mahou-shoujo/bytify-rs.git |
repository | https://github.com/mahou-shoujo/bytify-rs.git |
max_upload_size | |
id | 56466 |
size | 24,458 |
This crate provides a simple macro that can take multiple const-expr values as an input and merge them all together into a continuous byte array at compile-time. Supports all primitive types and is #[no_std] compatible.
use bytify::bytify;
const CAKE: char = '🎂';
assert_eq!(bytify!("The ", CAKE, " is a lie!"), [
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'!',
]);
All primitive types (as literals or any other const-expr values) as well as [u8; N]
and &[u8]
values.
i32
for integers and f64
for floats.bool
values are cast to u8
.str
and char
values.bytify!
always writes data using current target's native endianness.
To switch to little/big endianness use bytify_le!
or bytify_be!
respectively.
use bytify::{bytify_be, bytify_le};
assert_eq!(bytify_le!(1), [0x01, 0x00, 0x00, 0x00]);
assert_eq!(bytify_be!(1), [0x00, 0x00, 0x00, 0x01]);
use bytify::bytify;
bytify!(const NO_EVIL: '🙈', '🙉', '🙊');
assert_eq!(NO_EVIL, [0xF0, 0x9F, 0x99, 0x88, 0xF0, 0x9F, 0x99, 0x89, 0xF0, 0x9F, 0x99, 0x8A]);