3 个版本
0.4.2 | 2022 年 12 月 7 日 |
---|---|
0.4.1 | 2022 年 12 月 5 日 |
0.4.0 | 2022 年 12 月 4 日 |
#43 in #character-encoding
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