Crates.io | bystr |
lib.rs | bystr |
version | 0.1.3 |
source | src |
created_at | 2019-11-09 07:22:16.74743 |
updated_at | 2019-11-29 07:53:48.354526 |
description | macro to create compile-time, fixed length, byte array from a string |
homepage | |
repository | https://github.com/zmarcantel/bystr-rs |
max_upload_size | |
id | 179661 |
size | 39,493 |
bystr
is a Rust procedural-macro to turn a static string into an
array of bytes at compile time. This allows for easier FFI interaction
as well as stack-based "static" strings.
A null byte is appended to the given string when converted to an array.
Using the macro is fairly simple:
// import the crate
extern crate bystr;
use bystr::bystr;
fn main() {
// use it as a function call, get a null-terminated byte array
let as_bytes = bystr!("this will be a [24; u8]");
println!("{:?}", as_bytes);
// you may also define the length of the output array.
// this allows you to create fixed-length arrays larger than your string
// in order to match the length expected by receivers.
//
// an error will be thrown if len(str) >= len_arg.
let defined_length = bystr!(10, "hello");
assert_eq!(10, defined_length.len());
assert_eq!(defined_length, "hello\0\0\0\0\0".as_bytes()[..]);
// in addition to raw strings, you may also convert an identifier
// to a static string:
let ident_str = bystr!(defined_length);
assert_eq!(15, ident_str.len());
assert_eq!(ident_str, "defined_length\0".as_bytes()[..]);
}