2 个版本
0.1.5 | 2024 年 4 月 15 日 |
---|---|
0.1.4 | 2022 年 8 月 26 日 |
#202 在 并发
每月 312 次下载
47KB
747 行
rose_bloom
rose_bloom
是一个用于传递在推送时不会移动的引用的 crate。它也是线程安全的,所以如果你不介意在推送过程中释放内存,你可以将其用作并发队列。它是无锁的。
许多操作是 O(lg n)。这将仍然非常快。
示例
use rose_bloom::Rose;
let rose = Rose::new();
let out1 = rose.push(1);
rose.push(2);
rose.push(3);
println!("{out1}"); // 1
安装
将此添加到你的 Cargo.toml 中
[dependencies]
rose_bloom = "0.1"
#![no_std]
此 crate 是 #![no_std]
但需要 alloc
。
许可证
lib.rs
:
此库提供了 Rose
类型,这是一种具有稳定指针的数据结构。
它也是并发和无锁的。并发是这个项目的次要目标,但没有原子操作,你无法拥有一个安全且有用的 API,并且它更有用。
示例
use rose_bloom::Rose;
let rose = Rose::new();
let out1 = rose.push(1);
rose.push(2);
rose.push(3);
println!("{out1}"); // 1
与使用 [Vec] 的相同代码进行比较,这将无法编译,也不应该编译
let mut vect = Vec::new();
vect.push(1);
let out1 = &vect[0];
vect.push(2);
vect.push(3);
println!("{out1}");