3 个版本
使用旧 Rust 2015
0.1.2 | 2017年10月12日 |
---|---|
0.1.1 | 2017年10月11日 |
0.1.0 | 2017年10月10日 |
#28 in #retrieve
1,569 每月下载量
19KB
289 行
Token Store
此crate提供了一个简单的基于token的存储,用于任意类型。
它是用来做什么的?
此crate最初是wayland-rs的一部分,后来被提取出来。其存在的原因是这些crate的设计方式,数据与逻辑有很强的分离。
此token_store
在这种配置下工作良好:你有一组模块,它们需要共享数据但不需要同时访问它。而且,这些模块也不一定相互了解(因此你不能真的使用一个大型的固定结构来存储所有共享数据)。
使用token_store
,在初始化时,每个模块都将它需要的值存储在存储中,并在内部保留token。它可以选择向外界提供token来访问要共享的值。
然后,当每个模块需要执行其工作,它只需要一个&mut Store
,并可以使用其token检索它需要工作的数据,而独立于其他模块可能存储的内容。
如何使用它?
use token_store::Store;
// create a store
let mut store = Store::new();
// insert some things in it, you are given tokens
let token1 = store.insert(42);
// you can store any type as log as it is `Any + 'static`
let token2 = store.insert(String::from("I like trains"));
// the tokens keep the information of the store type,
// as such you don't need any annotation to retrieve a value:
store.get_mut(&token2).push_str(", and cars too!");
检索到的token可以克隆并在代码的各个部分之间共享。
文档
主分支的文档可在网上找到。
版本的文档可在docs.rs找到