4 个版本 (破坏性)
使用旧的 Rust 2015
0.6.0 | 2016 年 12 月 16 日 |
---|---|
0.3.0 | 2016 年 11 月 22 日 |
0.2.0 | 2016 年 11 月 12 日 |
0.1.0 | 2016 年 11 月 7 日 |
#60 in #汇流
21KB
482 行
内容
内容存储/序列化后端的设计目标。
为任何类型简单实现 Content 特质
在实现您类型的 Content 时,您只需提供两个方法,一个是 to_content
,它接受一个 Read 并生成一个 Self,另一个是 from_content
,以 u8 为例
impl Content for u8 {
fn to_content(&self, sink: &mut Sink) -> Result<()> {
sink.write_all(&[*self])
}
fn from_content(source: &mut Source) -> Result<Self> {
let b = &mut [0u8];
try!(source.read_exact(b));
Ok(b[0])
}
}
Backend
特质
后端特质使类型能够作为通过内容寻址的字节流存储,无论是 Vec<u8>
还是 File
。但它也可能是网络接口,例如。
类型是模式
实现 Content 的东西隐式地知道如何序列化和反序列化自己,包括知道它们的长度。由于类型可以嵌套其他 Content 类型,因此您基本上可以免费获得整个模式和反序列化。
零拷贝 io
当内容被放入存储时,读取和写入会直接连接。
依赖关系
~1.5MB
~22K SLoC