6 个版本 (破坏性更新)

0.5.0 2024年7月23日
0.4.0 2023年12月5日
0.3.0 2023年9月22日
0.2.1 2022年11月23日
0.1.0 2022年6月8日

#589 in Rust 模式

Download history 401/week @ 2024-05-02 578/week @ 2024-05-09 457/week @ 2024-05-16 565/week @ 2024-05-23 610/week @ 2024-05-30 514/week @ 2024-06-06 689/week @ 2024-06-13 586/week @ 2024-06-20 654/week @ 2024-06-27 618/week @ 2024-07-04 536/week @ 2024-07-11 842/week @ 2024-07-18 267/week @ 2024-07-25 9/week @ 2024-08-01 24/week @ 2024-08-08 29/week @ 2024-08-15

每月589次 下载
用于 tass

无许可证

11KB
172

文件切片

FileSlice 相当于 FileVec<u8> 的作用,相对于 File 的优势

  • 可以切片,将作用范围缩小到原始文件中的某个范围
  • 克隆成本低(原子添加;无需系统调用)
  • 搜索非常便宜(普通添加;无需系统调用)
  • 克隆之间互不影响(文件描述符的真正游标永远不会使用)。

一旦创建,FileSlice 的长度永远不会改变,即使底层文件会改变。例如,如果另一个进程向文件中添加一些数据,您需要调用 FileSlice::expand 以添加新数据。

可选功能

为自然受益于文件切片的 crate 提供的可选集成

  • tar:添加了一个 slice_tarball 辅助方法,用于将 tar::Archive 切割成多个 FileSlice
  • parquet:为 FileSlice 添加了 ChunkReader 实现。Parquet 文件包含许多页面,解码器需要交错读取这些页面。对于 FileChunkReader 实现通过创建许多 fd 克隆来完成此操作。使用 FileSlice 可以在达到 fd 限制之前打开大约 7 倍的 parquet 文件。

依赖关系

~8–18MB
~255K SLoC