#fifo-queue #queue #fifo #io

queue-file

queue-file 是一个快速、事务性、基于文件的 FIFO

16 个稳定版本

1.4.10 2023 年 3 月 17 日
1.4.8 2023 年 2 月 14 日
1.4.6 2022 年 7 月 4 日
1.3.0 2022 年 2 月 22 日
1.0.2 2019 年 6 月 27 日

#97数据结构

Download history 3346/week @ 2024-03-14 2530/week @ 2024-03-21 2568/week @ 2024-03-28 1587/week @ 2024-04-04 3322/week @ 2024-04-11 2007/week @ 2024-04-18 3050/week @ 2024-04-25 1791/week @ 2024-05-02 2079/week @ 2024-05-09 3089/week @ 2024-05-16 2971/week @ 2024-05-23 1645/week @ 2024-05-30 2952/week @ 2024-06-06 2221/week @ 2024-06-13 2006/week @ 2024-06-20 767/week @ 2024-06-27

8,387 每月下载量
2 crates 中使用

Apache-2.0

49KB
924 代码行

queue-file

Crate API License Windows Build Status

queue-file 是一个快速、事务性、基于文件的 FIFO。

从队列中添加或删除元素的操作是一个 O(1) 操作,并且是原子的。默认情况下写入是同步的;在操作返回之前,数据将被写入磁盘。

queue-file crate 是 Square, Inc. 的 Tape2 中的 QueueFile 类的功能完整且二进制兼容的移植。请在此处查看原始项目 here

文档

用法

要使用 queue-file,首先将此添加到您的 Cargo.toml

[dependencies]
queue-file = "1"

示例

use queue_file::QueueFile;

fn main() {
    let mut qf = QueueFile::open("example.qf")
        .expect("cannot open queue file");

    qf.add("ELEMENT #1".as_bytes()).expect("add failed");
    qf.add("ELEMENT #2".as_bytes()).expect("add failed");
    qf.add("ELEMENT #3".as_bytes()).expect("add failed");

    qf.remove().expect("remove failed");

    for (index, elem) in qf.iter().enumerate() {
        println!(
            "{}: {} bytes -> {}",
            index,
            elem.len(),
            std::str::from_utf8(&elem).unwrap_or("<invalid>")
        );
    }

    qf.clear().expect("clear failed");
}

MSRV

当前 MSRV 是 1.58.1

许可证

本项目采用 Apache 2.0 许可证

依赖

~2MB
~40K SLoC