#string-literal #utf-16 #literals #pointers #wide #api #null-terminated

wide-literals

用于与接受指向空终止字符串指针的宽字符串API一起使用的UTF-16字符串字面量

2个不稳定版本

0.2.0 2021年2月7日
0.1.0 2021年2月7日

#7 in #null-terminated

CC0-1.0 OR 公共领域许可证

4KB

Rust宽字符串字面量

此库提供了一个宏,在编译时将字符串字面量转换为UTF-16,允许您将其传递给期望指向空终止宽字符串指针的基于C的API,例如Windows API。通过允许您直接在可执行文件中存储UTF-16字符串,从而在运行时节省转换开销。语法尽可能简洁,以帮助避免行噪声。

let my_string: &'static u16 = w!("Hello, world!");
// These strings are references to 16-bit integers, which Rust considers “close enough” to the raw pointers that APIs expect to work without casting.
MessageBoxW(null_mut(), my_string, w!("Error"), MB_ICONEXCLAMATION | MB_OK);

此宏的目的是提供C基于API所需的确切字符串形式。如果您想要首先操作字符串,或者想要为非静态字符串使用UTF-16,这不是您想要的,尽管它可能对您仍然有用。

依赖项

~1.5MB
~35K SLoC