4个稳定版本
1.1.0 | 2023年10月30日 |
---|---|
1.0.8 | 2023年10月11日 |
1.0.7 | 2023年9月26日 |
1.0.6 | 2023年4月25日 |
0.1.19 |
|
#534 在 编码 中
63 每月下载量
在 4 个包中(3 个直接) 使用
3MB
514 行
chisel-decoders
概述
此包包含了一些非常简单、精简的解码器实现,它将从给定的 Read
实现中消费 u8
字节,并使用 UTF-8 或 ASCII 解码成 Rust 内部 char
类型。
解码器实现相当快速和宽松:底层使用一些位操作以及 unsafe transmute
函数来完成转换。
转换过程中不使用字符串分配.
用法
用法很简单,只要你有实现 Read
的东西来获取一些字节即可
从切片创建
只需将您的数组包裹在一个 mut
读取器中,然后将其连接到一个新的 Utf8Decoder
实例
# use std::io::BufReader;
# use chisel_decoders::utf8::Utf8Decoder;
let buffer: &[u8] = &[0x10, 0x12, 0x23, 0x12];
let mut reader = BufReader::new(buffer);
let _decoder = Utf8Decoder::new(&mut reader);
如果您相当确信您只处理 ASCII,那么只需选择 AsciiDecoder
# use std::io::BufReader;
# use chisel_decoders::ascii::AsciiDecoder;
let buffer: &[u8] = &[0x10, 0x12, 0x23, 0x12];
let mut reader = BufReader::new(buffer);
let _decoder = AsciiDecoder::new(&mut reader);
从文件创建
只需打开您的文件,将其包裹在一个 Read
实例中,然后将其连接到一个新的 Utf8Decoder
实例
# use std::fs::File;
# use std::io::BufReader;
# use std::path::PathBuf;
# use chisel_decoders::utf8::Utf8Decoder;
let path = PathBuf::from("./Cargo.toml");
let f = File::open(path);
let mut reader = BufReader::new(f.unwrap());
let _decoder = Utf8Decoder::new(&mut reader);
消费解码后的 chars
一旦创建了特定解码器的实例,您只需迭代 chars
来提取解码后的字符(解码器实现了 Iterator<Item=char>
)
# use std::fs::File;
# use std::io::BufReader;
# use std::path::PathBuf;
# use chisel_decoders::utf8::Utf8Decoder;
let path = PathBuf::from("./Cargo.toml");
let f = File::open(path);
let mut reader = BufReader::new(f.unwrap());
let decoder = Utf8Decoder::new(&mut reader);
for c in decoder {
println!("char: {}", c)
}
构建和测试
就像您预期的那样,只需运行 cargo build
来构建包。
建议和请求
如果您有任何建议、请求或只是关于此包的评论,请只需添加一个问题,我会在有时间的时候看看。如果您想在自己的工作中使用/修改此代码,请随意fork此仓库。