1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018年2月5日 |
---|
#3 in #consumed
被 2 crate 使用
7KB
132 行
rollbuf
一个可扩展的缓冲区,将最后的不完整部分滚动到开头,以便完成并消耗。
双许可 MIT 或 Unlicense
文档
用法
将此内容添加到您的 Cargo.toml
[dependencies]
rollbuf = "0.1"
并将此内容添加到您的 crate 根目录
extern crate rollbuf;
示例
use rollbuf::RollBuf;
let inner: &[u8] = &[1, 2, 3, 4, 5, 6, 7];
let mut b = RollBuf::with_capacity(3, inner);
struct TestCase {
consume: usize,
roll: bool,
want: (Vec<u8>, bool),
}
let test_cases = vec![
TestCase { consume: 2, roll: false, want: (vec![1, 2, 3], true) },
TestCase { consume: 0, roll: true, want: (vec![1, 2, 3, 4, 5, 6], true) },
TestCase { consume: 4, roll: false, want: (vec![5, 6], true) },
TestCase { consume: 2, roll: true, want: (vec![7], false) },
TestCase { consume: 2, roll: false, want: (vec![], false) },
];
for t in test_cases {
b.consume(t.consume);
if t.roll {
b.roll();
}
let is_full = b.fill_buf().unwrap();
let contents = b.contents();
assert_eq!((contents, is_full), (t.want.0.as_slice(), t.want.1));
}