4 个版本
0.1.3 | 2019年11月29日 |
---|---|
0.1.2 | 2019年11月14日 |
0.1.1 | 2019年11月9日 |
0.1.0 | 2019年11月9日 |
#950 在 Unix API 中
15KB
bystr
bystr
是一个 Rust 过程宏,可以在编译时将静态字符串转换为字节数组。这有助于简化 FFI 交互以及基于堆栈的 "静态" 字符串。
将字符串转换为数组时,会在给定字符串后追加一个空字节。
示例
使用宏相对简单
// 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()[..]);
}
依赖项
~1.5MB
~36K SLoC