使用旧的 Rust 2015
0.3.0 |
|
---|---|
0.2.0 |
|
0.1.0 |
|
#45 in #compiler-plugin
在 sizedbytes 中使用
11KB
221 行
rust-bytestool
用于处理常量字节表达式的编译器插件:连接字节字符串并计算字节字符串字面量的字节大小。
该编译器插件允许您处理字节(u8)数组并将它们组合,例如形成要发送到网络的常量消息。数组可能是不可变的,并在编译时形成。
示例:Cargo.toml 依赖关系
[dependencies]
bytestool = "0.3.0"
示例 src/main.rs:形成要发送到网络的常量消息
#![feature(asm)]
#![feature(plugin)]
#![plugin(bytestool)] // import macros byte_size_of and concat_bytes
#![feature(type_ascription)]
macro_rules! build_const_mesg {
($bstr1:expr, $bstr2:expr) => {{
const LEN1 : usize = byte_size_of!($bstr1);
const LEN2 : usize = byte_size_of!($bstr2);
let result : &[u8; LEN1 + LEN2] = concat_bytes!($bstr1, $bstr2);
result
}};
}
fn send_hello()
{
let mesg_hello = build_const_mesg!(b"HELLO", [23u8, 10u8, 10u8, 0u8] );
// send out the byte message via network
}
fn send_bye()
{
let mesg_bye = build_const_mesg!(b"BYE", [23u8, 10u8, 10u8, 0u8] );
// send out the byte message via network
}
注意:字节字符串不以空字符终止。b"0123" 的字节大小将为 4(在 C 中,字符串 "0123" 的大小将为 5)。
这些宏可以在宏内部使用。