29个版本 (15个重大更新)
0.21.0 | 2024年8月1日 |
---|---|
0.20.0 | 2024年6月27日 |
0.19.0 | 2024年6月5日 |
0.10.0 | 2024年2月5日 |
0.0.0 | 2021年6月24日 |
#251 in 编码
每月4,723次下载
用于40个crate(10个直接使用)
220KB
3K SLoC
tor-bytes
将事物解码/编码为字节的实用工具。
概述
tor-bytes
crate是Arti项目的一部分,该项目旨在用Rust实现Tor。Arti中的其他crate使用它来构建和处理Tor协议中所有字节编码的对象。对于文本目录项,请参阅tor-netdoc
crate。
此crate通常适用于编码和解码字节导向格式,这些格式不够规范,无法使用serde,也不够复杂,不需要完整的元语言。它可能不适合处理大于几KB大小的任何事物。
替代方案
std::io中的Reader/Writer traits更适合处理可能因IO问题而失败的操作。此crate无法处理此类操作:它是用于处理已存在于内存中的事物。
待办事项:考虑在这里更广泛地使用"bytes" crate。
待办事项:"untrusted" crate有类似的目标,但采取更多步骤以确保它永远不会panic。也许我们应该看看是否可以从中学到一些技巧。
待办事项:我们是否真的想将Reader
保留为结构体,而将Writer
保留为特质?
内容与概念
此crate围绕四个关键类型构建
Reader
:字节切片的视图,可以从其中解码数据。Writer
:表示可增长字节缓冲区的特质。 (Vec<u8>
和bytes::BytesMut
实现了此特质。)Writeable
:可以将对象编码到Writer
的特质。Readable
:可以将对象从Reader
解码的特质。
您想要编码或解码的每个对象都应该分别实现 Writeable
或 Readable
。
实现这些特质后,您可以使用 Reader 和 Writer 来处理您的类型及其相关类型。
许可证:MIT OR Apache-2.0
依赖项
~15MB
~288K SLoC