Struct pipebuf::PBufTrip

source ·
pub struct PBufTrip(/* private fields */);
Expand description

Tripwire value used to detect changes

This value is obtained using PipeBuf::tripwire, PBufRd::tripwire or PBufWr::tripwire, which all calculate the same value. See also the tripwire! macro which allows tuples of tripwire values to be created and compared.

The value will change in these cases:

  • Data is written to the pipe
  • Data is read from the pipe
  • A “push” state is set or consumed
  • An EOF state is set or consumed

This value can be compared before and after some operation to detect whether a change has occurred. However that operation must be purely a consumer operation or purely a producer operation. If data is both produced and consumed, then the tripwire value may return to the same value and the change wouldn’t be detected.

These scenarios are supported:

  • In a consumer, avoiding re-parsing an input buffer when there have been no changes made by the producer. Save a PBufTrip value before returning, and when called the next time, compare it to the current value.

  • In the glue code, detect whether a component call has caused changes to a buffer.

  • In consumer code, check whether some sub-part of the consumer processing has done something.

  • In producer code, check whether some sub-part of the producer processing has done something.

Trait Implementations§

source§

impl Clone for PBufTrip

source§

fn clone(&self) -> PBufTrip

Returns a copy 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 PartialEq for PBufTrip

source§

fn eq(&self, other: &PBufTrip) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for PBufTrip

source§

impl Eq for PBufTrip

source§

impl StructuralPartialEq for PBufTrip

Auto Trait Implementations§

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

§

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

§

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

§

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.