2 个版本
使用旧的 Rust 2015
0.1.1 | 2020年3月14日 |
---|---|
0.1.0 | 2017年12月29日 |
在 数据结构 中排名 #1144
每月下载量 231,380
在 53 个crate中使用(直接使用2个)
16KB
305 行
nested
用于嵌套集合的内存高效容器。
当您需要以下情况时,请使用此crate:
- 您可能需要一个大的
Vec<String>
Vec<Vec<T>>
Vec<C>
其中C
是堆分配的,动态大小的,并且可以实现Collection
特性
- 您实际上只需要使用借用项(
&[T]
或&str
)
您将只有2个分配,而不是n + 1个。
示例
use nested::Nested;
let mut v = Nested::<String>::new();
// you can either populate it one by one
v.push("a");
v.push("bb".to_string());
v.push("hhh");
v.extend(vec!["iiiiii".to_string(), "jjjj".to_string()]);
assert_eq!(v.len(), 5);
assert_eq!(&v[0], "a");
assert_eq!(&v[1], "bb");
// or you can directly collect it
let mut v = ["a", "b", "c", "d", "e", "f", "g"].iter().collect::<Nested<String>>();
assert_eq!(v.len(), 7);
// it also provides basic operations
let u = v.split_off(2);
assert_eq!(u.get(0), Some("c"));
v.truncate(1);
assert_eq!(v.pop(), Some("a".to_string()));
assert_eq!(v.pop(), None);
基准测试
请参阅bench目录。
以下是收集src/lib.rs文件中所有单词的基准测试
test bench_nested_string ... bench: 55,381 ns/iter (+/- 7,852)
test bench_nested_string_iter ... bench: 95,127 ns/iter (+/- 8,253)
test bench_vec_string ... bench: 117,203 ns/iter (+/- 13,089)
test bench_vec_string_iter ... bench: 142,245 ns/iter (+/- 24,701)
许可证
MIT