3个不稳定版本
0.4.0 | 2022年9月9日 |
---|---|
0.3.1 | 2022年9月9日 |
0.2.1 |
|
0.1.0 |
|
431 在 内存管理 中排名
每月下载量 24 次
19KB
374 行
contain-rs
用于定义/扩展生命周期的crate。
示例
简单容器
由 Vec
支持的 Container
的基本快速实现。
use contain::{Container, SimpleContainer};
fn append_thing<'a>(container: &'a impl Container<String>, s: &str) -> &'a str {
container.put(format!("{}thing", s))
}
let container = SimpleContainer::new();
let a = append_thing(&container, "some");
let b = append_thing(&container, "a ");
let c = append_thing(&container, "that ");
assert_eq!(a, "something");
assert_eq!(b, "a thing");
assert_eq!(c, "that thing");
assert_eq!(container.len(), 3)
去重容器
由 HashSet
支持的去重 Container
。如果存储了两个相等的项,则第二个将被丢弃,并返回第一个的引用。虽然比 SimpleContainer
资源密集,但在许多项相等且等效的情况下,它可以更节省内存,因为重复的项将被丢弃。
use contain::{Container, DeduplicatingContainer};
fn append_thing<'a>(container: &'a impl Container<String>, s: &str) -> &'a str {
container.put(format!("{}thing", s))
}
let container = DeduplicatingContainer::new();
let a = append_thing(&container, "some");
let b = append_thing(&container, "a ");
let c = append_thing(&container, "some");
assert_eq!(a, "something");
assert_eq!(b, "a thing");
assert_eq!(c, "something");
assert_eq!(container.len(), 2);
依赖关系
~0.4–5MB
~11K SLoC