#链表 #列表 #指针 #数据结构

rose_bloom

具有稳定指针的并发增长元素大小的链表

2 个版本

0.1.5 2024 年 4 月 15 日
0.1.4 2022 年 8 月 26 日

#202并发

Download history 4/week @ 2024-03-29 137/week @ 2024-04-12 11/week @ 2024-04-19 1/week @ 2024-05-24

每月 312 次下载

MIT 或 Unlicense

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}");

无运行时依赖