5 个版本 (2 个稳定版)
1.0.1 | 2021年12月27日 |
---|---|
1.0.0 | 2021年8月31日 |
0.1.1 | 2021年8月31日 |
0.1.0 | 2020年9月27日 |
0.0.1 | 2020年8月17日 |
#354 in 异步
3,894 每月下载
用于 2 crate
56KB
1K SLoC
Streamcatcher
Streamcatcher 是一个 Rust 线程安全、共享(异步)流缓冲区,旨在仅在访问和存储新数据时加锁。
Streamcatcher 设计允许在单程流(例如,命令输出)上进行搜索,这些流的输出需要由多个线程访问,而不需要频繁的重新分配、对安全只读数据的竞争或不必要的停滞。只有读取 新数据 的线程需要锁定数据结构,并且不会阻止较早的读取操作。
特性
- 无锁访问预读数据和完成后的流。
- 对新读取数据的透明缓存。
- 允许对只读字节数据流进行搜索。
- 分块分配以减少复制并支持未知输入长度。
- 通过复制到单个后端存储来可选加速流完成后的读取。
- (有状态)字节数据流转换。
- 通过具有
"async"
功能支持异步,并通过 ["async-std-compat"
],"smol-compat"
,"tokio-compat"
] 运行时。
主要算法在 这篇博客文章 中概述,绳引用跟踪已移至核心。
许可证
根据以下任一许可证授权:
- Apache 许可证版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则根据 Apache-2.0 许可证定义,你提交的任何有意包含在作品中的贡献都应双重授权如上所述,无需任何附加条款或条件。
详细指南请参考CONTRIBUTING 文件。
依赖项
~0.6–30MB
~442K SLoC