4个版本
0.1.4 | 2023年3月9日 |
---|---|
0.1.3 | 2022年9月6日 |
0.1.2 | 2022年8月30日 |
0.1.1 | 2021年8月31日 |
60 在 算法 中排名
每月下载量 570,741次
在 200 个crate中(22个直接) 使用
12KB
141 代码行
task-local-extensions
提供基于类型的任务本地容器,用于存储任意数据。
如何安装
将 task-local-extensions
添加到依赖中
[dependencies]
# ...
task-local-extensions = "0.1.0"
使用方法
Extensions
是一个容器,可以存储每种类型的一个值,因此可以通过类型插入和检索值
use task_local_extensions::Extensions;
let a: i64 = 3;
let mut ext = Extensions::new();
ext.insert(a);
assert_eq!(ext.get::<i64>(), Some(&3));
该crate还提供了 with_extensions
,以便在执行给定任务时设置 Extensions
实例
use task_local_extensions::{get_local_item, set_local_item, with_extensions, Extensions};
async fn my_task() {
let a: i64 = get_local_item().await.unwrap(0);
let msg = format!("The value of a is: {}", a);
set_local_item(msg).await;
}
let a: i64 = 3;
let (out_ext, _) = with_extensions(Extensions::new().with(a), my_task()).await;
let msg = out_ext.get::<String>().unwrap();
assert_eq!(msg.as_str(), "The value of a is: 3");
许可证
许可协议为 Apache License, Version 2.0 或 MIT 许可证,您可任选其一。除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证定义,都应按上述方式双许可,不附加任何额外条款或条件。
依赖关系
~6KB