#io #concurrency

io_partition

A library allowing to use just a part of a Read + Seek object

4 stable releases

1.1.1 Feb 11, 2021
1.0.1 Feb 9, 2021
1.0.0 Mar 9, 2020

#139 in Concurrency

Download history 13/week @ 2021-06-28 13/week @ 2021-07-05 14/week @ 2021-07-12 17/week @ 2021-07-19 15/week @ 2021-07-26 23/week @ 2021-08-02 24/week @ 2021-08-09 11/week @ 2021-08-16 15/week @ 2021-08-23 1/week @ 2021-08-30 8/week @ 2021-09-06 8/week @ 2021-09-13 8/week @ 2021-09-20 4/week @ 2021-09-27 7/week @ 2021-10-04 11/week @ 2021-10-11

79 downloads per month
Used in 12 crates (4 directly)

CC0 license

20KB
366 lines

io_partition

This rust crate allow to take a part of an object that implement Read + Seek (typically a file), by specifing it's offset and lenght. It can also build similar item with an Arc<Mutex>, ensuring coherency of the pointer in the file, allowing to access the same file concurrently (althougth it isn't optimized for speed, as it have to unlock the Mutex and seek to the good position).

This mutex can however be locked for single-threader access, allowing near-native performance.


lib.rs:

This rust crate allow to take a part of an object that implement Read + Seek (typically a file), by specifying it's offset and lenght. It can also build similar item with an Arc<Mutex>, ensuring coherency of the pointer in the file, allowing to access the same file concurrently (althougth it isn't optimized for speed, as it have to unlock the Mutex and seek to the good position).

Examples

use std::io::{Cursor, Read};
use io_partition::Partition;
let file = Cursor::new(&[0, 2, 4, 6, 8, 10, 12]);

let mut sub_file = Partition::new(file, 2, 3).unwrap();
let mut buffer = [0, 0, 0, 0, 0];
assert_eq!(sub_file.read(&mut buffer).unwrap(), 3);
assert_eq!(buffer, [4, 6, 8, 0, 0]);

Dependencies

~355–790KB
~19K SLoC