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日

#1578Rust 模式

Download history 524/week @ 2024-03-24 420/week @ 2024-03-31 350/week @ 2024-04-07 353/week @ 2024-04-14 459/week @ 2024-04-21 441/week @ 2024-04-28 445/week @ 2024-05-05 464/week @ 2024-05-12 264/week @ 2024-05-19 360/week @ 2024-05-26 485/week @ 2024-06-02 451/week @ 2024-06-09 452/week @ 2024-06-16 371/week @ 2024-06-23 272/week @ 2024-06-30 447/week @ 2024-07-07

1,568 每月下载量
10crate中使用(6个直接使用)

MIT/Apache

25KB
681

实习

Docs.rs Build Status codecov

为 Rust 内部化字符串和其他内容。

什么是内部化?

内部化是一种存储唯一不可变数据的方法。

想象一下,你的程序持有许多字符串值,其中大部分值相同,而且它们根本不会发生变化。如果你使用 String 来存储它们,仅仅是为了存储相同的文本,就会浪费很多内存。

通过管理全局缓存池,内部化有效地消除了这个问题,在上面的例子中,池的类型可以是 HashSet<Rc<str>>。当你需要一个新的拥有字符串时,首先你应该在全球池中查找它。如果找到了想要的字符串,就使用它。如果没有,只需创建一个新的,并将它们也放入池中。

或者,你可以直接使用 internship 并忽略所有麻烦。为什么不呢?

这个库提供了什么?

这个crate公开了一系列内部化类型,它们对应于 Rc,但保证在线程内其值是唯一的。这些类型的实例是每个线程缓存的,以实现这一目标。

此外,这些类型不堆分配可以放在栈上的小数据。在64字节机器上,可内联数据的尺寸限制为15字节。

IStrIBytesICStr 分别对应于 str[u8]CStr

许可证

此存储库根据您的要求,在 MIT 许可证Apache 许可证 2.0 下双重许可。通过为 Internship 贡献,您同意您的贡献将根据这两个许可证进行许可。

依赖关系

~175KB