Struct git_packetline::provider::ReadWithSidebands[][src]

pub struct ReadWithSidebands<'a, T, F> where
    T: Read
{ /* fields omitted */ }

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.

Performance Notice

Reading from this intermediary copies bytes 3 times: OS -> (parent) line provider buffer -> our buffer -> caller’s output buffer which won’t make this very efficient for huge bandwidths.

Implementations

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

pub fn new(parent: &'a mut Provider<T>) -> Self[src]

Create a new instance with the given provider as parent.

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

pub fn with_progress_handler(
    parent: &'a mut Provider<T>,
    handle_progress: F
) -> Self
[src]

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.

pub fn without_progress_handler(parent: &'a mut Provider<T>) -> Self[src]

Create a new instance without a progress handler.

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

Forwards to the parent Provider::reset_with()

pub fn stopped_at(&self) -> Option<PacketLine<'static>>[src]

Forwards to the parent Provider::stopped_at()

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

Set or unset the progress handler.

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

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

Trait Implementations

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

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

Returns the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more

fn consume(&mut self, amt: usize)[src]

Tells this buffer that amt bytes have been consumed from the buffer, so they should no longer be returned in calls to read. Read more

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

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

fn read_until(
    &mut self,
    byte: u8,
    buf: &mut Vec<u8, Global>
) -> Result<usize, Error>
1.0.0[src]

Read all bytes into buf until the delimiter byte or EOF is reached. Read more

fn split(self, byte: u8) -> Split<Self>1.0.0[src]

Returns an iterator over the contents of this reader split on the byte byte. Read more

fn lines(self) -> Lines<Self>1.0.0[src]

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

impl<'a, T, F> Drop for ReadWithSidebands<'a, T, F> where
    T: Read
[src]

fn drop(&mut self)[src]

Executes the destructor for this type. Read more

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

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

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

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

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

fn is_read_vectored(&self) -> bool[src]

🔬 This is a nightly-only experimental API. (can_vector)

Determines if this Reader has an efficient read_vectored implementation. Read more

unsafe fn initializer(&self) -> Initializer[src]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader can work with buffers of uninitialized memory. Read more

fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>1.0.0[src]

Read all bytes until EOF in this source, placing them into buf. Read more

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

Read all bytes until EOF in this source, appending them to buf. Read more

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

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

fn by_ref(&mut self) -> &mut Self1.0.0[src]

Creates a “by reference” adaptor for this instance of Read. Read more

fn bytes(self) -> Bytes<Self>1.0.0[src]

Transforms this Read instance to an Iterator over its bytes. Read more

fn chain<R>(self, next: R) -> Chain<Self, R> where
    R: Read
1.0.0[src]

Creates an adaptor which will chain this stream with another. Read more

fn take(self, limit: u64) -> Take<Self>1.0.0[src]

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

Auto Trait Implementations

impl<'a, T, F> RefUnwindSafe for ReadWithSidebands<'a, T, F> where
    F: RefUnwindSafe,
    T: RefUnwindSafe

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

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

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

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

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<B> BufReadExt for B where
    B: BufRead
[src]

fn byte_lines(self) -> ByteLines<Self>[src]

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

fn byte_records(self, terminator: u8) -> ByteRecords<Self>[src]

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

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

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

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

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

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

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

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

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

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

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]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.