1 个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年6月16日 |
---|
#432 在 无标准库
被 2 crates 使用
26KB
489 行
C-风格的 UTF-8 字符串用于 Rust
该项目使得在与需要传递UTF-8编码字符串的C API进行交互时,更容易建立保证。
什么是UTF-8?
UTF-8 是自2008年以来被许多编程社区选用的字符编码,包括Rust的 str
原语。
UTF-8 可以表示 Unicode 标准中的所有 1,112,064 个代码点。代码点宽度可变,从 8 位到 32 位。
UTF-8 在C中出现的位置?
UTF-8 在SDL中
简单的直接媒体层(SDL)库公开了某些仅与UTF-8编码的C字符串交互的API。以下是一个可能的包装器,可以围绕SDL创建:
impl Window {
/* ... */
fn title(&self) -> &CUtf8 {
unsafe {
let title = SDL_GetWindowTitle(self.inner);
CUtf8::from_ptr(title).unwrap()
}
}
fn set_title(&mut self, title: &CUtf8) {
unsafe {
SDL_SetWindowTitle(self.inner, title.as_ptr());
}
}
/* ... */
}
可以通过 &CUtf8
实例与上述代码交互,这可以通过 c_utf8!
宏轻松完成
window.set_title(c_utf8!("MyAwesomeApp"));
安装
此crate可在 crates.io 上找到,并可以通过将以下内容添加到您的项目的 Cargo.toml
中来使用:
[dependencies]
c_utf8 = "0.1.0"
并将以下内容添加到您的crate根目录(lib.rs
或 main.rs
):
#[macro_use]
extern crate c_utf8;
许可证
该项目可在以下任一许可证下使用:
-
Apache许可证第2版(
LICENSE-APACHE
或 http://apache.ac.cn/licenses/LICENSE-2.0)
任选其一。