context-iterators 0.1.1

Iterators adaptors with associated read-only data.
Documentation

context-iterators

build_status crates msrv

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::*;

type Closure = fn(usize, &usize) -> usize;
type MappedIterator = MapCtx<WithCtx<std::ops::Range<usize>, usize>, Closure>;

let iter: MappedIterator = (0..10)
    .with_context(42)
    .map_with_context(|item: usize, context: &usize| item + *context);

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.

Recent Changes

See CHANGELOG for a list of changes. The minimum supported rust version will only change on major releases.

License

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.