#cell #arc #sync

arc-cell

包含 Arc/Weak 的简单类似 Cell 对象的帮助函数

12 个版本

0.3.3 2022 年 3 月 23 日
0.3.1 2022 年 3 月 15 日
0.2.2 2022 年 3 月 12 日
0.1.5 2016 年 12 月 12 日

#33#arc

Download history 29/week @ 2024-03-14 566/week @ 2024-03-21 906/week @ 2024-03-28 511/week @ 2024-04-04 335/week @ 2024-04-11 1023/week @ 2024-04-18 1920/week @ 2024-04-25 1088/week @ 2024-05-02 1645/week @ 2024-05-09 677/week @ 2024-05-16 1585/week @ 2024-05-23 3436/week @ 2024-05-30 3060/week @ 2024-06-06 5413/week @ 2024-06-13 3773/week @ 2024-06-20 1901/week @ 2024-06-27

14,656 每月下载量

MIT 许可证

11KB
222

arc-cell

文档

一个简单的库,用于包含 Arc/Weak 引用的并发类似 Cell 对象。

[dependencies]
arc-cell = "0.3"

使用方法

轻量级可交换的 Arc 成员

use std::sync::Arc;
use arc_cell::ArcCell;

pub struct Thing {
    data: ArcCell<Vec<u8>>,
}

impl Thing {
    pub fn update(&self, data: Arc<Vec<u8>>) {
        self.data.set(data);
    }
}

自引用结构

use std::sync::Arc;
use arc_cell::WeakCell;

pub struct Thing {
    self_ref: WeakCell<Thing>,
    // ...
}

impl Thing {
    pub fn new() -> Arc<Thing> {
        let thing = Arc::new(Thing {
            self_ref: WeakCell::empty(),
        });
        
        thing.self_ref.store(&thing);
        thing
    }
    
    pub fn clone_ref(&self) -> Arc<Thing> {
        self.self_ref.upgrade().expect("This should be valid if we have a valid self")
    }
}

无运行时依赖

功能