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 #汇流

GPL-3.0 许可证

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