3 个版本

0.4.2 2022 年 12 月 7 日
0.4.1 2022 年 12 月 5 日
0.4.0 2022 年 12 月 4 日

#43 in #character-encoding

MIT/Apache

14KB
143 代码行

encoded

Rust 宏,用于编译时转换字符编码

安装

cargo add encoded

用法

const BYTES: &[u8] = encoded::shift_jis!("漢字");
assert_eq!(BYTES, b"\x8a\xbf\x8e\x9a");

有关更多信息,请参阅文档


lib.rs:

编译时转换字符编码的宏,可减少运行时处理成本和二进制大小。

编码定义依赖于 encoding_rs 包。

示例

将字符串字面量转换为编码的字节数组

const BYTES: &[u8] = encoded::shift_jis!("漢字");
assert_eq!(BYTES, b"\x8a\xbf\x8e\x9a");

也可以与 std::io::Write 一起使用

use std::io::{Cursor, Write};

let mut buff = Cursor::new(Vec::new());
buff.write_all(encoded::shift_jis!("漢字"));
assert_eq!(buff.get_ref(), b"\x8a\xbf\x8e\x9a");

编译错误

参数必须是字面量

const KANJI: &str = "漢字";
const BYTES: &[u8] = encoded::shift_jis!(KANJI);
//                                       ^^^^^

任何不可映射的字符将导致编译错误

const BYTES: &[u8] = encoded::shift_jis!("鷗外");
//                                       ^^^^^^

依赖项

~3.5MB
~123K SLoC