Piece

Enum Piece 

Source
pub enum Piece<'a> {
    Terminal(&'a [u8]),
    Partial(&'a [u8]),
    End,
}
Expand description

A Split read result (from Split::next_piece).

Variants§

§

Terminal(&'a [u8])

A terminal piece, i.e. past it is either the separator or EOF.

It may be the entire separated part, but it may also just be a piece of it if the previous iteration gave a Partial.

§

Partial(&'a [u8])

The part seems1 too big to fit in the buffer, one of the future reads will terminate or End1 it.

You can examine it and decide if you want to ignore it by skipping to after the next Terminal, or keep it by allocating a Vec for it or the like.

1 It’s possible that the next read will find the separator or EOF immediately, in which case we’d want to yield Terminal, but we couldn’t determine that before reading again. When we find the separator, the next piece will be a Terminal of an empty slice. When we find EOF, the next piece will be End.

E.g. terminal past read:

let mut s = Split::<3,_>::bytes_lines(b"aaa\n");
assert_eq!(s.next_piece()?, Piece::Partial(b"aaa".as_ref()));
assert_eq!(s.next_piece()?, Piece::Terminal(b"".as_ref()));
assert_eq!(s.next_piece()?, Piece::End);

E.g. EOF past read:

let mut s = Split::<3,_>::bytes_lines(b"aaa");
assert_eq!(s.next_piece()?, Piece::Partial(b"aaa".as_ref()));
assert_eq!(s.next_piece()?, Piece::End);
§

End

End of file.

Trait Implementations§

Source§

impl<'a> Clone for Piece<'a>

Source§

fn clone(&self) -> Piece<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Piece<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Default for Piece<'a>

Source§

fn default() -> Piece<'a>

Returns the “default value” for a type. Read more
Source§

impl<'a> Hash for Piece<'a>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<'a> Ord for Piece<'a>

Source§

fn cmp(&self, other: &Piece<'a>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<'a> PartialEq for Piece<'a>

Source§

fn eq(&self, other: &Piece<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> PartialOrd for Piece<'a>

Source§

fn partial_cmp(&self, other: &Piece<'a>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<'a> Copy for Piece<'a>

Source§

impl<'a> Eq for Piece<'a>

Source§

impl<'a> StructuralPartialEq for Piece<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Piece<'a>

§

impl<'a> RefUnwindSafe for Piece<'a>

§

impl<'a> Send for Piece<'a>

§

impl<'a> Sync for Piece<'a>

§

impl<'a> Unpin for Piece<'a>

§

impl<'a> UnwindSafe for Piece<'a>

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.