2 个版本

0.1.1 2021 年 1 月 27 日
0.1.0 2021 年 1 月 26 日

#652 in 并发

MIT 许可证

9KB
96

并发持久栈

快速、并发且易于使用的持久栈实现。

操作成本

  • push-O(1)
  • pop-O(1)
  • clone-O(1)
  • iter next-O(1)

示例

use persistent_stack::PersistentStack;

let mut s1 = PersistentStack::new();
s1.push(1);

let mut s2 = s1.clone(); // O(1) operation

std::thread::spawn(move || {
    s2.push(2); // PersistentStack values can be shared safely
    assert_eq!(s2.iter().copied().collect::<Vec<_>>(), vec![2, 1]);

    std::thread::sleep(std::time::Duration::from_millis(20));

    s2.push(4);
    assert_eq!(s2.iter().copied().collect::<Vec<_>>(), vec![4, 2, 1]);

    assert_eq!(s2.pop(), Ok(4)); // We can also pop values from stack
});

s1.push(3);
assert_eq!(s1.iter().copied().collect::<Vec<_>>(), vec![3, 1]);

std::thread::sleep(std::time::Duration::from_millis(20));

s1.push(5);
assert_eq!(s1.iter().copied().collect::<Vec<_>>(), vec![5, 3, 1]);

无运行时依赖