3 个版本
0.1.2 | 2022年4月17日 |
---|---|
0.1.1 | 2022年4月17日 |
0.1.0 | 2022年4月17日 |
1380 在 数据结构
58 每月下载量
在 limo 中使用
15KB
61 行
multipeek
一个迭代器适配器,可以在不移动底层迭代器游标的情况下预览后续元素。
查看文档以获取更多详细信息。
示例
use multipeek::multipeek;
let mut iter = multipeek([1, 2, 3, 4].into_iter());
// Peek at the first element.
let first_peek = iter.peek().cloned();
assert_eq!(first_peek, Some(1));
// Advance the iterator cursor to point at the first element.
let first = iter.next();
assert_eq!(first, first_peek);
// Peek two steps ahead, at the third element.
let third_peek = iter.peek_nth(1).cloned();
assert_eq!(third_peek, Some(3));
// Advance the iterator cursor twice.
// The iterator cursor will now point to the third element.
iter.next();
let third = iter.next();
assert_eq!(third_peek, third);
// Peeking beyond the end of the iterator returns `None`.
let ambitious_peek = iter.peek_nth(5);
assert!(ambitious_peek.is_none());
no_std
multipeek
可用于 no_std
环境。它需要一个分配器。
替代品和先前艺术
Rust 的标准库提供了 Peekable
。
它允许你预览迭代器中的下一个元素,但无法进一步查看。
itertools
提供了 MultiPeek
。
它允许你预览到你想要的任何位置,但 MultiPeek::peek
不是幂等的:调用一次 peek
返回下一个元素,再次调用 peek
返回第二个元素。
multipeek
,就像 itertools
一样,提供了预览任何远距离的选项。
我们的 MultiPeek::peek
实现是幂等的:MultiPeek::peek
总是返回下一个元素。
你可以使用 MultiPeek::peek_nth
进一步预览,只需指定你想要查看多少步之外的元素。
我们的 MultiPeek
实现直接受到 itertools
实现的启发。
许可
根据您的选择,许可为 Apache License,Version 2.0 或 MIT 许可。除非您明确说明,否则您有意提交以包含在本软件包中的任何贡献,根据 Apache-2.0 许可,应按上述方式双重许可,而无需任何其他条款或条件。