3个版本

0.1.3 2019年11月29日
0.1.2 2019年11月14日
0.1.0 2019年11月9日

#18#array-string


bystr 中使用

GPL-3.0-or-later

5KB
80

bystr

docs.rs/bystr Build Status

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
~35K SLoC