#iterator #context #data #associated #adaptor #read-only #pointers

context-iterators

具有关联只读数据的迭代器适配器

3 个不稳定版本

0.2.0 2023年6月21日
0.1.1 2023年6月19日
0.1.0 2023年6月18日

2065Rust 模式

Download history 363/week @ 2024-03-13 212/week @ 2024-03-20 102/week @ 2024-03-27 305/week @ 2024-04-03 773/week @ 2024-04-10 448/week @ 2024-04-17 403/week @ 2024-04-24 922/week @ 2024-05-01 1094/week @ 2024-05-08 861/week @ 2024-05-15 941/week @ 2024-05-22 1538/week @ 2024-05-29 1177/week @ 2024-06-05 1336/week @ 2024-06-12 1056/week @ 2024-06-19 1428/week @ 2024-06-26

5,175 每月下载量
用于 8 个crate(3个直接使用)

MIT/Apache

15KB
351

context-iterators

build_status crates msrv

具有关联只读数据的迭代器适配器。

通过使用函数指针或非捕获闭包,可用来命名包装迭代器的类型。

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));

MappedIterator 类型可以在需要具体类型的上下文中使用,例如作为特质的关联类型。

trait Iterable {
    type Iter: Iterator<Item = usize>;
}

struct MyIterable;

impl Iterable for MyIterable {
   type Iter = MappedIterator;
}

请在此处阅读 API 文档

最近更改

请参阅 变更日志 以查看更改列表。最低支持的 Rust 版本仅在主要版本发布时才会更改。

许可证

该项目可在 Apache License,版本 2.0 https://apache.ac.cn/licenses/LICENSE-2.0 或 MIT 许可证 http://opensource.org/licenses/MIT 下双授权,由您选择。此文件不得复制、修改或分发,除非符合这些条款。

无运行时依赖