9 releases

0.3.4 Apr 6, 2025
0.3.3 Nov 1, 2023
0.3.2 Aug 19, 2023
0.3.1 Nov 3, 2022
0.1.0 Jul 6, 2016

#57 in Filesystem

Download history 11169/week @ 2025-02-04 11422/week @ 2025-02-11 10562/week @ 2025-02-18 10738/week @ 2025-02-25 12829/week @ 2025-03-04 14067/week @ 2025-03-11 12079/week @ 2025-03-18 12860/week @ 2025-03-25 15201/week @ 2025-04-01 16103/week @ 2025-04-08 12950/week @ 2025-04-15 15700/week @ 2025-04-22 14413/week @ 2025-04-29 15510/week @ 2025-05-06 16612/week @ 2025-05-13 10672/week @ 2025-05-20

59,821 downloads per month
Used in 84 crates (22 directly)

MIT license

490KB
1K SLoC

positioned-io

This crate allows you to specify an offset for reads and writes, without changing the current position in a file. This is similar to pread() and pwrite() in C.

The major advantages of this type of I/O are:

  • You don't need to seek before doing a random-access read or write, which is convenient.
  • Reads don't modify the file at all, so don't require mutability.

Crates.io Documentation

Example

Read the fifth 512-byte sector of a file:

use std::fs::File;
use positioned_io::ReadAt;

// note that file does not need to be mut
let file = File::open("tests/pi.txt")?;

// read up to 512 bytes
let mut buf = [0; 512];
let bytes_read = file.read_at(2048, &mut buf)?;

Note: If possible use the RandomAccessFile wrapper. On Windows ReadAt directly on File is very slow.

Documentation

https://docs.rs/positioned-io

License

positioned-io is licensed under the MIT license.

Dependencies

OSZAR »