使用旧的 Rust 2015
0.0.0 |
|
---|
#3 in #hacks
1KB
实验性:Rust 中的零分配流式解析器
这里有很多技巧。没有 API 是稳定的。代码可能不会按照注释所说的那样执行。
关键目标
- 构建一个
StreamingIterator
类型,它可以返回对内部状态的引用,包括 I/O 缓冲区和类似flate2
的库的输出缓冲区。这阻止了实现collect
,但为什么我们不能有map
、filter
和fold
呢?
目标应用
- rust-csv.
- Snappy 压缩记录的多核 map/reduce。
- 任何需要迭代数据流而不分配内存的人。
随机有用的阅读材料
- 高阶类型及其重要性.
- 使用提议的关联类型和生命周期模拟高阶类型.
- 迭代短生命周期对象
- 借用作用域不应该是总是词法的(即,“为什么我们有那一行
unsafe
”) - 借用检查器被条件返回的借用所困惑(与上面相同,但更清晰)
- 迭代器通过引用返回项,生命周期问题(
Iterator
为什么这样做,原因解释在这里)
我们请求帮助: