4 stable releases
1.1.1 | Feb 11, 2021 |
---|---|
1.0.1 | Feb 9, 2021 |
1.0.0 | Mar 9, 2020 |
#582 in Concurrency
710 downloads per month
Used in 13 crates
(4 directly)
21KB
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
~260–720KB
~17K SLoC