#环形缓冲区 #向量 #队列 #支持 #固定大小 #生产者-消费者 #兼容

无需 std ring-vec

基于向量的零依赖、与 no-std 兼容、生产者-消费者、固定大小、面向项的环形缓冲区

2 个版本

0.1.1 2020年8月13日
0.1.0 2020年8月11日

#2463 in 数据结构

每月 28 次下载
用于 simple-rate-limit

MPL-2.0 许可证

8KB
99 代码行

ring-vec

License Package Documentation

基于向量的零依赖、与 no-std 兼容、生产者-消费者、固定大小、面向项的环形缓冲区。

需要 alloc,用于向量。

状态

全新,有基本测试,似乎可以正常工作。

用法

    #[test]
    fn works() {
        let mut q: RingVec<usize> = RingVec::new(1);
        assert_eq!(q.peek(), None);
        assert_eq!(q.pop(), None);
        assert_eq!(q.push(1), Ok(()));
        assert_eq!(q.peek(), Some(&1));
        assert_eq!(q.pop(), Some(1));
        assert_eq!(q.peek(), None);
        assert_eq!(q.pop(), None);
        assert_eq!(q.push(2), Ok(()));
        assert_eq!(q.peek(), Some(&2));
        assert_eq!(q.push(3), Err(3));
        assert_eq!(q.pop(), Some(2));
        assert_eq!(q.push(4), Ok(()));
        assert_eq!(q.peek(), Some(&4));
        assert_eq!(q.pop(), Some(4));
        assert_eq!(q.peek(), None);
        assert_eq!(q.pop(), None);
        assert_eq!(q.peek(), None);
    }
Copyright (c) 2020 James Laver, ring-vec contributors.

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.

无运行时依赖