Filter

Struct Filter 

Source
pub struct Filter<F, T, const BATCH: usize> { /* private fields */ }
Expand description

A Listener which transforms or discards messages before passing them on to another Listener.

Construct this by calling Listener::filter(); see its documentation for more information.

§Generic parameters

  • F is the type of the filter function to use.
  • T is the type of the listener to pass filtered messages to.
  • BATCH is the maximum number of filtered messages to gather before passing them on. It is used as the size of a stack-allocated array, so should be chosen with the size of the message type in mind.

Implementations§

Source§

impl<F, T> Filter<F, T, 1>

Source

pub fn with_stack_buffer<const BATCH: usize>(self) -> Filter<F, T, BATCH>

Request that the filter accumulate output messages into a batch.

This causes each receive operation to allocate an array [MO; BATCH] on the stack, where MO is the output message type produced by F. Therefore, the buffer size should be chosen keeping the size of MO in mind. Also, the amount of buffer used cannot exceed the size of the input batch, so it is not useful to choose a buffer size larger than the expected batch size.

If MO is a zero-sized type, then the buffer is always unbounded, so with_stack_buffer() has no effect and is unnecessary in that case.

Trait Implementations§

Source§

impl<F: Clone, T: Clone, const BATCH: usize> Clone for Filter<F, T, BATCH>

Source§

fn clone(&self) -> Filter<F, T, BATCH>

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<F, T: Debug, const BATCH: usize> Debug for Filter<F, T, BATCH>

Source§

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

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

impl<MI, MO, F, T, const BATCH: usize> FromListener<Filter<F, T, BATCH>, MI> for Filter<F, T, BATCH>
where F: Fn(&MI) -> Option<MO> + Send + Sync, T: Listener<MO>,

Source§

fn from_listener(listener: Filter<F, T, BATCH>) -> Self

No-op conversion returning the listener unchanged.

Source§

impl<MI, MO, F, T, const BATCH: usize> Listener<MI> for Filter<F, T, BATCH>
where F: Fn(&MI) -> Option<MO> + Send + Sync, T: Listener<MO>,

Source§

fn receive(&self, messages: &[MI]) -> bool

Process and store the given series of messages. Read more
Source§

fn filter<MI, F>(self, function: F) -> Filter<F, Self, 1>
where Self: Sized, F: for<'a> Fn(&'a MI) -> Option<M>,

Wraps self so to apply a map/filter function (similar to Iterator::filter_map()) to incoming messages, to discard uninteresting messages and transform interesting ones. Read more
Source§

fn gate(self) -> (Gate, GateListener<Self>)
where Self: Sized,

Wraps self to pass messages only until the returned Gate, and any clones of it, are dropped. Read more
Source§

impl<F, T: Pointer, const BATCH: usize> Pointer for Filter<F, T, BATCH>

Source§

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

Produces the same output as the listener this filter wraps.

Auto Trait Implementations§

§

impl<F, T, const BATCH: usize> Freeze for Filter<F, T, BATCH>
where F: Freeze, T: Freeze,

§

impl<F, T, const BATCH: usize> RefUnwindSafe for Filter<F, T, BATCH>

§

impl<F, T, const BATCH: usize> Send for Filter<F, T, BATCH>
where F: Send, T: Send,

§

impl<F, T, const BATCH: usize> Sync for Filter<F, T, BATCH>
where F: Sync, T: Sync,

§

impl<F, T, const BATCH: usize> Unpin for Filter<F, T, BATCH>
where F: Unpin, T: Unpin,

§

impl<F, T, const BATCH: usize> UnwindSafe for Filter<F, T, BATCH>
where F: UnwindSafe, T: UnwindSafe,

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<LIn, LOut, M> IntoListener<LOut, M> for LIn
where LIn: Listener<M>, LOut: Listener<M> + FromListener<LIn, M>,

Source§

fn into_listener(self) -> LOut

Wrap this Listener into a type-erased form of type L.
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.