11 个版本 (5 个重大更新)
使用旧的 Rust 2015
0.6.0 | 2018年4月5日 |
---|---|
0.5.3 | 2018年3月26日 |
0.4.0 | 2018年3月20日 |
0.3.1 | 2018年3月4日 |
0.1.0 | 2018年2月28日 |
#1578 在 Rust 模式
1,568 每月下载量
在 10 个crate中使用(6个直接使用)
25KB
681 行
实习
为 Rust 内部化字符串和其他内容。
什么是内部化?
内部化是一种存储唯一不可变数据的方法。
想象一下,你的程序持有许多字符串值,其中大部分值相同,而且它们根本不会发生变化。如果你使用 String
来存储它们,仅仅是为了存储相同的文本,就会浪费很多内存。
通过管理全局缓存池,内部化有效地消除了这个问题,在上面的例子中,池的类型可以是 HashSet<Rc<str>>
。当你需要一个新的拥有字符串时,首先你应该在全球池中查找它。如果找到了想要的字符串,就使用它。如果没有,只需创建一个新的,并将它们也放入池中。
或者,你可以直接使用 internship
并忽略所有麻烦。为什么不呢?
这个库提供了什么?
这个crate公开了一系列内部化类型,它们对应于 Rc
,但保证在线程内其值是唯一的。这些类型的实例是每个线程缓存的,以实现这一目标。
此外,这些类型不堆分配可以放在栈上的小数据。在64字节机器上,可内联数据的尺寸限制为15字节。
IStr
、IBytes
和 ICStr
分别对应于 str
、[u8]
和 CStr
。
许可证
此存储库根据您的要求,在 MIT 许可证 和 Apache 许可证 2.0 下双重许可。通过为 Internship 贡献,您同意您的贡献将根据这两个许可证进行许可。
依赖关系
~175KB