6个版本 (3个破坏性更新)
使用旧的Rust 2015
0.4.0 | 2015年8月18日 |
---|---|
0.3.0 | 2015年8月16日 |
0.2.0 | 2015年8月13日 |
0.1.2 | 2015年8月8日 |
#68 in #一次
每月23次下载
用于 2 crates
8KB
137 行
qindex_multi
API 文档
此crate通过提供 MultiIndexable
,其实现者允许我们在索引它们时违反基本的借用规则(使用 Index[Mut]
) ,只要我们遵守每个单独元素。
换句话说:只要没有读写冲突,我们就可以一次性对集合进行可变和不可变多次索引。
注意:由于缺少 IndexMut
-实现,当前 MultiIndexable
没有在libstd的 HashMap
和 BTreeMap
中实现。当 IndexAssign
-功能实现时,这将会改变。
此crate需要最新的rust nightly才能编译。
待办事项
- 文档、测试、示例
示例用法
#![feature(slice_patterns)]
extern crate qcollect;
extern crate qindex_multi;
extern crate vec_map;
use vec_map::VecMap;
use qindex_multi::{MultiIndexable, MultiIndex};
#[test]
fn test1(){
let mut data = VecMap::new();
data.insert(0, 100u16);
data.insert(2, 200);
data.insert(20, 300);
data.insert(200, 400);
let read_indicies = vec![0, 2, 20];
let write_indicies = vec![200];
let multi_idx = MultiIndex::new(read_indicies, write_indicies);
{
let mut output = data.index_multi(&multi_idx);
let [a, b, c]: [_; 3] = qcollect::iter_into_fixed(output.read);
let d = output.write.next().unwrap();
*d += *a + *b + c;
}
assert_eq!(data[200], 1000);
}
依赖关系
~91KB