Expand description
Slices of files
FileSlice is to File what Bytes is to
Vec<u8>. Advantages over File:
- You can slice it, reducing the scope to a range within the original file
- Cloning is cheap (atomic addition; no syscall)
- Seeking is very cheap (normal addition; no syscall)
- Clones can’t affect each other at all (the fd’s real cursor is never used).
Once created, a FileSlice never changes length, even if the underlying file
does. For example, if another process appends some data to the file, you need
to call FileSlice::expand on your slice in order to add the new data.
§Optional features
Optional integrations for crates which naturally benefit from file slicing:
tar: Adds aslice_tarballhelper method for splitting up atar::Archiveinto a bunch ofFileSlices.parquet: Adds aChunkReaderimpl forFileSlice. A parquet file contains many pages, and the decoder needs to interleave reads from these pages. TheChunkReaderimpl forFileaccomplishes this by making many clones of the fd. UsingFileSliceinstead lets you open roughly 7x as many parquet files before you hit your fd limit.
Structs§
- File
Slice - A slice of a file