Crates.io | ring-vec |
lib.rs | ring-vec |
version | 0.1.1 |
source | src |
created_at | 2020-08-11 09:00:24.499674 |
updated_at | 2020-08-13 08:06:56.541703 |
description | A zero-dependency, no-std compatible, producer-consumer, fixed-size, item-oriented ring buffer backed by a vector. |
homepage | https://github.com/irrustible/ring-vec |
repository | https://github.com/irrustible/ring-vec |
max_upload_size | |
id | 275304 |
size | 23,709 |
A zero-dependency, no-std compatible, producer-consumer, fixed-size, item-oriented ring buffer backed by a vector.
Requires alloc
, for the vector.
Brand new, with basic tests, seems to work.
#[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/.