35个版本 (18个重大更改)
0.20.1 | 2023年10月27日 |
---|---|
0.20.0 | 2023年1月20日 |
0.19.1 | 2021年8月14日 |
0.18.1 | 2021年7月23日 |
#196 在 数据结构
用于 2 个crate
26KB
772 行
list-fn
一个泛型懒列表。它是一个带有延续的不可变迭代器。
懒列表可以用作标准Rust迭代器的不可变替代品。
任何 List<End = Self>
都是迭代器。任何 &mut Iterator
都是 List<End = Self>
。
另见 生成器。
基本操作
FlatScan
。项目顺序很重要。FilterScan
Scan
折叠
FlatMap
。项目顺序不重要。映射
过滤
展平
演变
1. 迭代器
trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
}
trait IteratorReturn: Iterator {
type Return;
fn return(&mut self) -> Return;
}
2. 生成器
trait Generator {
type Yield;
type Return;
fn resume(&mut self) -> GeneratorState<Self::Yield, Self::Return>;
}
enum GeneratorState<Y, R> {
Yielded(Y),
Complete(R),
}
3. 列表
trait List {
type Yield;
type Return;
fn resume(self) -> ListState<Self>;
}
enum ListState<L: List> {
Yielded(L::Yield, L),
Return(L::Return),
}
FlatScan
3. 列表
trait FlatScan {
type InputYield;
type InputReturn;
type OutputYield;
type OutputReturn;
fn map_yield(self, input_yield: Self::InputYield) -> impl List<Yield = Self::OutputYield, Return = Self>;
fn map_return(self, input_return: Self::InputReturn) -> impl List<Yield = Self::OutputYield, Return = OutputReturn>;
}
2. 生成器
trait FlatScan {
type InputYield;
type InputReturn;
type OutputYield;
type OutputReturn;
fn map_yield(&mut self, input_yield: Self::InputYield) -> impl Iterator<Item = Self::OutputYield>;
fn map_return(&mut self, input_return: Self::InputReturn) ->
impl Generator<Item = Self::OutputYield, Return = Self::OutputReturn>;
}
1. 迭代器
trait FlatScan {
type InputYield;
type InputReturn;
type OutputYield;
type OutputReturn;
fn map_yield(&mut self, input_yield: Self::InputYield) -> impl Iterator<Item = Self::OutputYield>;
fn map_return(&mut self, input_return: Self::InputReturn) ->
impl Iterator<Item = Self::OutputYield> + IteratorReturn<Return = Self::OutputReturn>;
}
依赖项
~12KB