#iterator-adapter #save #restore

restorable

用于保存和恢复迭代器状态的迭代器适配器

2 个不稳定版本

0.2.0 2019年10月5日
0.1.0 2019年10月3日

#1022 in 数据结构

MIT/Apache

7KB
104

Restorable:用于保存和恢复迭代器状态的迭代器适配器

这对于编写需要回溯的词法分析和解析器来说非常理想。

使用方法

  1. 适配器
use restorable::RestorableIter;

#[test]
fn test_restorable_new() {
    let mut iterator = RestorableIter::new(0..4);
    assert_eq!(iterator.next(), Some(0));
    assert_eq!(iterator.next(), Some(1));
    iterator.save();
    assert_eq!(iterator.next(), Some(2));
    assert_eq!(iterator.next(), Some(3));
    iterator.restore();
    assert_eq!(iterator.next(), Some(2));
    assert_eq!(iterator.next(), Some(3));
    assert_eq!(iterator.next(), None);
}
  1. 特质
use restorable::Restorable;

#[test]
fn test_iter_restorable() {
    let mut iterator = (0..4).iter_restorable();
    assert_eq!(iterator.next(), Some(0));
    assert_eq!(iterator.next(), Some(1));
    iterator.save();
    assert_eq!(iterator.next(), Some(2));
    assert_eq!(iterator.next(), Some(3));
    iterator.restore();
    assert_eq!(iterator.next(), Some(2));
    assert_eq!(iterator.next(), Some(3));
    assert_eq!(iterator.next(), None);
}

安装

在您的 cargo.toml 中将 restorable 添加到 [dependencies] 下,并使用适当的版本号。

[dependencies]
restorable = "^MAJOR.MINOR"

变更日志

0.2.0 - 添加了 clear 以停止保存并清除缓冲区。

无运行时依赖