#迭代器 #回溯 #历史

backtracking_iterator

一个具有项目历史记录的泛型迭代器的简单实现,能够回溯和忘记

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

MIT 许可证

44KB
595

回溯迭代器

Documentation status

通过提供一个内存历史记录来扩展现有迭代器的包装器,以便提供回溯功能。

为了在现有迭代器之上创建回溯迭代器,您首先需要用 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);

无运行时依赖