#ring-buffer #river

river-ring-buffer

一个简单的环形缓冲区实现

5个版本 (1个稳定版本)

1.0.0 2024年1月8日
0.4.0 2024年1月7日
0.3.0 2024年1月7日
0.2.0 2024年1月7日
0.1.0 2024年1月7日

#717 in 数据结构

MIT/Apache

7KB
90

河环形缓冲区

Crates.io Version docs.rs (with version) GitHub Actions Workflow Status Crates.io License

使用Rust实现的一个简单的环形缓冲区。

环形缓冲区是一种高性能的数据结构,非常适合缓冲数据流。

我构建这个的动机是了解环形缓冲区,因为它们在新的Linux内核功能(如eBPF和IO Uring)中得到了广泛的应用。

示例用法

use river_ring_buffer::RingBuffer;

fn main() -> Result<(), &'static str> {
    let mut buffer = RingBuffer::new(3);

    buffer.put(1)?;
    buffer.put(2)?;
    buffer.put(3)?;

    buffer.read(); // Returns Some(1)
}

当缓冲区满时返回错误。

use river_ring_buffer::RingBuffer;

fn main() -> Result<(), &'static str> {
    let mut buffer = RingBuffer::new(3);

    buffer.put(1)?;
    buffer.put(2)?;
    buffer.put(3)?;
    buffer.put(4)?; // Returns Err(BufferFullError)   
}

无运行时依赖