Struct io_partition::Partition [−][src]
A Partition
allow you to refer to a part of the file. It consume the input file.
The input offset is the first byte that will be accessible. The user of the Partition
won't be able to seek before it, and it will be considered the offset 0 of the Partition
The input lenght is the number of byte that can be read with this Partition
. The last readable byte from the input file is input_offset + input_len
Examples
use std::io::{Cursor, Read, Seek, SeekFrom}; use io_partition::Partition; let some_value = (0..30).collect::<Vec<u8>>(); let input_file = Cursor::new(&some_value); //0, 1, 2, 3 ... 99 let mut partition = Partition::new(input_file, 10, 20).unwrap(); let mut buffer = [0]; partition.read_exact(&mut buffer).unwrap(); assert_eq!(buffer, [10]); partition.read_exact(&mut buffer).unwrap(); assert_eq!(buffer, [11]); assert!(partition.seek(SeekFrom::Current(-10)).is_err()); partition.seek(SeekFrom::End(-1)).unwrap(); partition.read_exact(&mut buffer).unwrap(); assert_eq!(buffer, [29]); partition.seek(SeekFrom::End(-3)); let mut buffer_large = [0; 6]; assert_eq!(partition.read(&mut buffer_large).unwrap(), 3); assert_eq!(buffer_large, [27, 28, 29, 0, 0, 0]);
Implementations
impl<T: Read + Seek> Partition<T>
[src]
pub fn new(mut file: T, start: u64, lenght: u64) -> Result<Partition<T>>
[src]
Create new Partition
, with the specified input file, start and lenght
This will check that the file is big enought at creation, and the cursor will be located at the beggining of the file.
Trait Implementations
impl<T: Debug + Read + Seek> Debug for Partition<T>
[src]
impl<T: Read + Seek> Read for Partition<T>
[src]
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
[src]
pub fn read_vectored(
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<usize, Error>
1.36.0[src]
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<usize, Error>
pub fn is_read_vectored(&self) -> bool
[src]
pub unsafe fn initializer(&self) -> Initializer
[src]
pub fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
1.0.0[src]
pub fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
1.0.0[src]
pub fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
1.6.0[src]
pub fn by_ref(&mut self) -> &mut Self
1.0.0[src]
pub fn bytes(self) -> Bytes<Self>
1.0.0[src]
pub fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read,
1.0.0[src]
R: Read,
pub fn take(self, limit: u64) -> Take<Self>
1.0.0[src]
impl<T: Seek + Read> Seek for Partition<T>
[src]
fn seek(&mut self, pos: SeekFrom) -> Result<u64>
[src]
pub fn stream_len(&mut self) -> Result<u64, Error>
[src]
pub fn stream_position(&mut self) -> Result<u64, Error>
1.51.0[src]
impl<T: Read + Seek> Write for Partition<T>
[src]
fn write(&mut self, _: &[u8]) -> Result<usize>
[src]
Do not use this write function. It will always fail. It is just here because some library require this to have the Write
trait to make this work with this (rust_vfs)
fn flush(&mut self) -> Result<()>
[src]
Always suceed. It is useless to call it
pub fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>
1.36.0[src]
pub fn is_write_vectored(&self) -> bool
[src]
pub fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
1.0.0[src]
pub fn write_all_vectored(
&mut self,
bufs: &mut [IoSlice<'_>]
) -> Result<(), Error>
[src]
&mut self,
bufs: &mut [IoSlice<'_>]
) -> Result<(), Error>
pub fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>
1.0.0[src]
pub fn by_ref(&mut self) -> &mut Self
1.0.0[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for Partition<T> where
T: RefUnwindSafe,
[src]
T: RefUnwindSafe,
impl<T> Send for Partition<T> where
T: Send,
[src]
T: Send,
impl<T> Sync for Partition<T> where
T: Sync,
[src]
T: Sync,
impl<T> Unpin for Partition<T> where
T: Unpin,
[src]
T: Unpin,
impl<T> UnwindSafe for Partition<T> where
T: UnwindSafe,
[src]
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,