Struct WithSidebands

Source
pub struct WithSidebands<'a, T, F>
where T: Read,
{ /* private fields */ }
Available on crate feature blocking-io and (crate features blocking-io or async-io) only.
Expand description

An implementor of BufRead yielding packet lines on each call to read_line(). It’s also possible to hide the underlying packet lines using the Read implementation which is useful if they represent binary data, like the one of a pack file.

Implementations§

Source§

impl<'a, T> WithSidebands<'a, T, fn(bool, &[u8])>
where T: Read,

Source

pub fn new(parent: &'a mut StreamingPeekableIter<T>) -> Self

Create a new instance with the given provider as parent.

Source§

impl<'a, T, F> WithSidebands<'a, T, F>
where T: Read, F: FnMut(bool, &[u8]),

Source

pub fn with_progress_handler( parent: &'a mut StreamingPeekableIter<T>, handle_progress: F, ) -> Self

Create a new instance with the given parent provider and the handle_progress function.

Progress or error information will be passed to the given handle_progress(is_error, text) function, with is_error: bool being true in case the text is to be interpreted as error.

Source

pub fn without_progress_handler( parent: &'a mut StreamingPeekableIter<T>, ) -> Self

Create a new instance without a progress handler.

Source

pub fn reset_with(&mut self, delimiters: &'static [PacketLineRef<'static>])

Forwards to the parent StreamingPeekableIter::reset_with()

Source

pub fn stopped_at(&self) -> Option<PacketLineRef<'static>>

Forwards to the parent StreamingPeekableIter::stopped_at()

Source

pub fn set_progress_handler(&mut self, handle_progress: Option<F>)

Set or unset the progress handler.

Source

pub fn peek_data_line(&mut self) -> Option<Result<Result<&[u8], Error>>>

Effectively forwards to the parent StreamingPeekableIter::peek_line(), allowing to see what would be returned next on a call to read_line().

§Warning

This skips all sideband handling and may return an unprocessed line with sidebands still contained in it.

Source

pub fn read_data_line( &mut self, ) -> Option<Result<Result<PacketLineRef<'_>, Error>>>

Read a whole packetline from the underlying reader, with empty lines indicating a stop packetline.

§Warning

This skips all sideband handling and may return an unprocessed line with sidebands still contained in it.

Trait Implementations§

Source§

impl<'a, T, F> BufRead for WithSidebands<'a, T, F>
where T: Read, F: FnMut(bool, &[u8]),

Source§

fn fill_buf(&mut self) -> Result<&[u8]>

Returns the contents of the internal buffer, filling it with more data, via Read methods, if empty. Read more
Source§

fn consume(&mut self, amt: usize)

Marks the given amount of additional bytes from the internal buffer as having been read. Subsequent calls to read only return bytes that have not been marked as read. Read more
Source§

fn read_line(&mut self, buf: &mut String) -> Result<usize>

Reads all bytes until a newline (the 0xA byte) is reached, and append them to the provided String buffer. Read more
Source§

fn has_data_left(&mut self) -> Result<bool, Error>

🔬This is a nightly-only experimental API. (buf_read_has_data_left)
Checks if there is any data left to be read. Read more
1.0.0 · Source§

fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize, Error>

Reads all bytes into buf until the delimiter byte or EOF is reached. Read more
1.83.0 · Source§

fn skip_until(&mut self, byte: u8) -> Result<usize, Error>

Skips all bytes until the delimiter byte or EOF is reached. Read more
1.0.0 · Source§

fn split(self, byte: u8) -> Split<Self>
where Self: Sized,

Returns an iterator over the contents of this reader split on the byte byte. Read more
1.0.0 · Source§

fn lines(self) -> Lines<Self>
where Self: Sized,

Returns an iterator over the lines of this reader. Read more
Source§

impl<'a, T, F> Drop for WithSidebands<'a, T, F>
where T: Read,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<'a, T, F> Read for WithSidebands<'a, T, F>
where T: Read, F: FnMut(bool, &[u8]),

Source§

fn read(&mut self, buf: &mut [u8]) -> Result<usize>

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
1.36.0 · Source§

fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

Like read, except that it reads into a slice of buffers. Read more
Source§

fn is_read_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Reader has an efficient read_vectored implementation. Read more
1.0.0 · Source§

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>

Reads all bytes until EOF in this source, placing them into buf. Read more
1.0.0 · Source§

fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

Reads all bytes until EOF in this source, appending them to buf. Read more
1.6.0 · Source§

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

Reads the exact number of bytes required to fill buf. Read more
Source§

fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (read_buf)
Pull some bytes from this source into the specified buffer. Read more
Source§

fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (read_buf)
Reads the exact number of bytes required to fill cursor. Read more
1.0.0 · Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adaptor for this instance of Read. Read more
1.0.0 · Source§

fn bytes(self) -> Bytes<Self>
where Self: Sized,

Transforms this Read instance to an Iterator over its bytes. Read more
1.0.0 · Source§

fn chain<R>(self, next: R) -> Chain<Self, R>
where R: Read, Self: Sized,

Creates an adapter which will chain this stream with another. Read more
1.0.0 · Source§

fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

Creates an adapter which will read at most limit bytes from it. Read more

Auto Trait Implementations§

§

impl<'a, T, F> Freeze for WithSidebands<'a, T, F>
where F: Freeze,

§

impl<'a, T, F> RefUnwindSafe for WithSidebands<'a, T, F>

§

impl<'a, T, F> Send for WithSidebands<'a, T, F>
where F: Send, T: Send,

§

impl<'a, T, F> Sync for WithSidebands<'a, T, F>
where F: Sync, T: Sync,

§

impl<'a, T, F> Unpin for WithSidebands<'a, T, F>
where F: Unpin,

§

impl<'a, T, F> !UnwindSafe for WithSidebands<'a, T, F>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<B> BufReadExt for B
where B: BufRead,

Source§

fn byte_lines(self) -> ByteLines<Self>
where Self: Sized,

Returns an iterator over the lines of this reader, where each line is represented as a byte string. Read more
Source§

fn byte_records(self, terminator: u8) -> ByteRecords<Self>
where Self: Sized,

Returns an iterator over byte-terminated records of this reader, where each record is represented as a byte string. Read more
Source§

fn for_byte_line<F>(&mut self, for_each_line: F) -> Result<(), Error>
where Self: Sized, F: FnMut(&[u8]) -> Result<bool, Error>,

Executes the given closure on each line in the underlying reader. Read more
Source§

fn for_byte_record<F>( &mut self, terminator: u8, for_each_record: F, ) -> Result<(), Error>
where Self: Sized, F: FnMut(&[u8]) -> Result<bool, Error>,

Executes the given closure on each byte-terminated record in the underlying reader. Read more
Source§

fn for_byte_line_with_terminator<F>( &mut self, for_each_line: F, ) -> Result<(), Error>
where Self: Sized, F: FnMut(&[u8]) -> Result<bool, Error>,

Executes the given closure on each line in the underlying reader. Read more
Source§

fn for_byte_record_with_terminator<F>( &mut self, terminator: u8, for_each_record: F, ) -> Result<(), Error>
where Self: Sized, F: FnMut(&[u8]) -> Result<bool, Error>,

Executes the given closure on each byte-terminated record in the underlying reader. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.