Crates.io | context-iterators |
lib.rs | context-iterators |
version | 0.2.0 |
source | src |
created_at | 2023-06-18 21:37:43.428166 |
updated_at | 2023-06-21 20:44:39.225896 |
description | Iterators adaptors with associated read-only data. |
homepage | |
repository | https://github.com/aborgna/context_iterators |
max_upload_size | |
id | 893648 |
size | 28,998 |
Iterators adaptors with associated read-only data.
Useful for naming the types of wrapped iterators by using function pointers or non-capturing closures.
use context_iterators::*;
use std::ops::Range;
type MappedIterator = MapCtx<WithCtx<Range<u16>, u16>, usize>;
let iter: MappedIterator = (0..10)
.with_context(42)
.map_with_context(|item: u16, context: &u16| (item + *context) as usize);
assert!(iter.eq(42..52));
The MappedIterator
type can be used in contexts where a concrete type is
needed, for example as an associated type for a trait.
trait Iterable {
type Iter: Iterator<Item = usize>;
}
struct MyIterable;
impl Iterable for MyIterable {
type Iter = MappedIterator;
}
Please read the API documentation here.
See CHANGELOG for a list of changes. The minimum supported rust version will only change on major releases.
This project is dual-licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 or the MIT license http://opensource.org/licenses/MIT, at your option. This file may not be copied, modified, or distributed except according to those terms.