pub enum ToWorktreeOutcome<'input, 'pipeline> {
    Unchanged(&'input [u8]),
    Buffer(&'pipeline [u8]),
    Process(MaybeDelayed<'pipeline>),
}
Expand description

The result of a conversion with zero or more filters.

Panics

If std::io::Read is used on it and the output is delayed, a panic will occour. The caller is responsible for either disallowing delayed results or if allowed, handle them. Use `is_delayed().

Variants§

§

Unchanged(&'input [u8])

The original input wasn’t changed and the original buffer is present

§

Buffer(&'pipeline [u8])

A reference to the result of one or more filters of which one didn’t support streaming.

This can happen if an eol, working-tree-encoding or ident filter is applied, possibly on top of an external filter.

§

Process(MaybeDelayed<'pipeline>)

An external filter (and only that) was applied and its results have to be consumed. Note that the output might be delayed, which requires special handling to eventually receive it.

Implementations§

source§

impl<'input, 'pipeline> ToWorktreeOutcome<'input, 'pipeline>

source

pub fn is_delayed(&self) -> bool

Return true if this outcome is delayed. In that case, one isn’t allowed to use Read or cause a panic.

source

pub fn is_changed(&self) -> bool

Returns true if the input buffer was actually changed, or false if it is returned directly.

source

pub fn as_bytes(&self) -> Option<&[u8]>

Return a buffer if we contain one, or None otherwise.

This method is useful only if it’s clear that no driver is available, which may cause a stream to be returned and not a buffer.

source

pub fn as_read(&mut self) -> Option<&mut (dyn Read + '_)>

Return a stream to read the drivers output from, if possible.

Note that this is only the case if the driver process was applied last and didn’t delay its output.

Trait Implementations§

source§

impl<'input, 'pipeline> Read for ToWorktreeOutcome<'input, 'pipeline>

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, Global>) -> Result<usize, Error>

Read 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>

Read 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>

Read 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)
Read the exact number of bytes required to fill cursor. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere 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<'input, 'pipeline> !RefUnwindSafe for ToWorktreeOutcome<'input, 'pipeline>

§

impl<'input, 'pipeline> !Send for ToWorktreeOutcome<'input, 'pipeline>

§

impl<'input, 'pipeline> !Sync for ToWorktreeOutcome<'input, 'pipeline>

§

impl<'input, 'pipeline> Unpin for ToWorktreeOutcome<'input, 'pipeline>

§

impl<'input, 'pipeline> !UnwindSafe for ToWorktreeOutcome<'input, 'pipeline>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.