1 个不稳定版本

使用旧的Rust 2015

0.1.0 2018年6月16日

#432无标准库


2 crates 使用

MIT/Apache

26KB
489

C-风格的 UTF-8 字符串用于 Rust

Build status Crate version rustc version

该项目使得在与需要传递UTF-8编码字符串的C API进行交互时,更容易建立保证。

文档

什么是UTF-8?

UTF-8 是自2008年以来被许多编程社区选用的字符编码,包括Rust的 str 原语。

The usage of the main encodings on the web as recorded by Google

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.rsmain.rs):

#[macro_use]
extern crate c_utf8;

许可证

该项目可在以下任一许可证下使用:

任选其一。

无运行时依赖