10 个稳定版本
1.4.5 | 2023年4月26日 |
---|---|
1.3.3 | 2023年2月2日 |
1.3.2 | 2023年1月27日 |
1.3.1 | 2022年12月29日 |
1.0.0 | 2022年11月24日 |
#200 in 并发
每月下载量 251
在 graph_event 中使用
18KB
373 行
Armc
Armc 是一个 Rust 库,它为共享数据提供了包装器,确保在修改和读取时数据完整性和线程阻塞。
安装
您可以将 Armc 依赖项添加到 Cargo.toml 文件中
toml
[dependencies]
armc = "1.4.4"
用法
要使用该库,只需使用以下代码导入它
use armc::Armc;
功能
以下是库的一些功能
创建 Armc 对象
要创建 Armc 对象,只需使用 new 方法并传递您要存储的数据
let armc = Armc::new(5);
lock_ref
访问 Armc 对象的数据 您可以通过阻塞可能的突变来访问存储的数据。可以进行并行访问。
let data = armc.lock_ref();
println!("Data: {:?}", data);
lock
修改 Armc 对象的数据 要修改 Armc 对象的数据,您需要使用 lock 方法,这将阻塞所有突变访问
let mut data = armc.lock();
*data = 10;
println!("Data: {:?}", data);
克隆 Armc 对象
您可以使用 clone 方法克隆 Armc 对象
let armc_clone = armc.clone();
println!("Data: {:?}", *armc_clone.lock_ref());
宏 object!
及其衍生物
一组可能对 Rust 程序员有用的宏是 object!
、object_with_new!
、object_ref_access!
和 object_mut_access!
宏。这些宏旨在简化具有线程安全字段访问的结构的创建。
object!
宏创建一个结构体,其字段由 ARMC(原子引用计数互斥锁)包装,以允许线程安全的突变。宏保留宏的名称作为结构体的名称。
object_with_new!
宏与 object!
宏类似,但它还生成一个名为 new
的构造函数方法,该方法接受每个字段的初始值。
object_ref_access!
宏与 object_with_new!
宏类似,但它还为每个字段生成获取器方法。
object_mut_access!
宏与 object_ref_access!
宏类似,但它还会为每个字段生成带后缀 _mut
的可变设置方法。注意!您需要在项目中添加 paste
依赖才能使 object_mut_access 宏正常工作。
[dependencies]
paste = "1.0.12"
这些宏旨在在创建具有线程安全字段访问的 struct 时节省时间和精力,可以使用以下方式使用:
#[macro_use]
extern crate my_crate;
object_mut_access!(MyStruct {
foo: u32,
bar: String,
});
let mut my_struct = MyStruct::new(42, "hello".to_string());
assert_eq!(*my_struct.foo(), 42);
my_struct.foo_mut(13);
assert_eq!(*my_struct.foo(), 13);
有关这些宏实现的更多信息,请参阅每个宏的文档。
贡献
欢迎贡献!请随意打开一个问题或提交一个拉取请求。