#buffer #roll #part #rolls #consumed #beginning #incomplete

rollbuf

一个可扩展的缓冲区,将最后的不完整部分滚动到开头,以便完成并消耗

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018年2月5日

#3 in #consumed


2 crate 使用

Unlicense/MIT 许可

7KB
132

rollbuf

一个可扩展的缓冲区,将最后的不完整部分滚动到开头,以便完成并消耗。

双许可 MIT 或 Unlicense

文档

https://docs.rs/rollbuf

用法

将此内容添加到您的 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));
}

无运行时依赖