10个不稳定版本 (3个重大变更)
0.4.4 | 2019年4月22日 |
---|---|
0.4.3 | 2019年3月8日 |
0.4.1 | 2018年12月25日 |
0.3.1 | 2018年12月1日 |
0.1.0 | 2018年10月28日 |
#1134 在 数据结构
每月下载量:33
44KB
595 行
回溯迭代器
通过提供一个内存历史记录来扩展现有迭代器的包装器,以便提供回溯功能。
为了在现有迭代器之上创建回溯迭代器,您首先需要用 BacktrackingRecord
包装它。然后,您有两个选择 BacktrackingIterator
Copying
,它生成迭代器项目的内存克隆Referencing
,它生成迭代器项目的不可变借用
行为来自 BacktrackingIterator
特性。
示例
use backtracking_iterator::{BacktrackingIterator, BacktrackingRecord};
let mut backtracking_record = BacktrackingRecord::new(my_iter);
let mut my_backtracking_iter = backtracking_record.copying();
// Now we can call `next()`, and the result will also be copied
let here = my_backtracking_iter.get_ref_point();
let fresh = my_backtracking_iter.next();
my_backtracking_iter.backtrack(here);
let remembered = my_backtracking_iter.next();
assert!(fresh == remembered);