3 个版本

使用旧 Rust 2015

0.1.2 2017年10月12日
0.1.1 2017年10月11日
0.1.0 2017年10月10日

#28 in #retrieve

Download history 321/week @ 2024-03-13 520/week @ 2024-03-20 489/week @ 2024-03-27 557/week @ 2024-04-03 396/week @ 2024-04-10 482/week @ 2024-04-17 472/week @ 2024-04-24 392/week @ 2024-05-01 383/week @ 2024-05-08 444/week @ 2024-05-15 435/week @ 2024-05-22 483/week @ 2024-05-29 406/week @ 2024-06-05 322/week @ 2024-06-12 368/week @ 2024-06-19 399/week @ 2024-06-26

1,569 每月下载量

MIT 许可证

19KB
289

Build Status Coverage Status

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找到

没有运行时依赖