5个版本
新 0.0.6 | 2024年8月11日 |
---|---|
0.0.5 | 2024年8月10日 |
0.0.4 | 2024年8月2日 |
0.0.3 | 2024年5月3日 |
0.0.2 | 2024年4月3日 |
208 在 内存管理
709 每月下载
125KB
2.5K SLoC
垃圾回收的“内部化”字符串。
内部化是一种使许多相同事物共享相同底层资源的过程。此crate引入了两种由Refuse垃圾收集器驱动的类型
RootString
:一个类似于Root<String>
的类型,确保所有相同精确字节序列的实例都引用相同的分配。RefString
:一个指向RootString
的Ref<String>
类型。
use refuse::CollectionGuard;
use refuse_pool::{RefString, RootString};
let a = RootString::from("a");
let a_again = RootString::from(String::from("a"));
// Both a and a_again point to the same underlying storage.
assert_eq!(a.root_count(), 2);
// Comparing two RootStrings is cheap.
assert_eq!(a, a_again);
// a_ref can be used to gain a reference to a string,
// but only until the string is unreachable.
let a_ref = a.downgrade();
let mut guard = CollectionGuard::acquire();
assert_eq!(a_ref.load(&guard), Some("a"));
drop(a);
drop(a_again);
guard.collect();
assert_eq!(a_ref.load(&guard), None);
依赖项
~3–8.5MB
~67K SLoC