Skip to main content

AnyStream

Struct AnyStream 

Source
pub struct AnyStream<'a, T>(/* private fields */);
Expand description

A type-erased Stream implementation that wraps stream (outputs)Stream::Output in Box<dyn Any>.

This is useful as the final layer in a stack of nested Streams that allows the top level Executor to operate without knowledge of the concrete output types.

From a performance perspective, this is usually fine since

  1. Individual Stream operations are typically expensive relative to the cost of boxing.
  2. Many concrete Stream implementations will use the same Executor implementation. Thus, boxing can help reduce code bloat without significant performance impact.

Implementations§

Source§

impl<'a, T> AnyStream<'a, T>

Source

pub fn new(stream: &'a mut T) -> Self

Wrap stream in an AnyStream.

Trait Implementations§

Source§

impl<'a, T: Debug> Debug for AnyStream<'a, T>

Source§

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

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

impl<A, T> Stream<A> for AnyStream<'_, T>
where A: Arguments, T: Stream<A>,

Source§

type Output = Box<dyn Any>

Output type for all operations. The 'static is to allow results to be aggregated in Any for type erasure in higher level Executors.
Source§

fn search(&mut self, args: A::Search<'_>) -> Result<Self::Output>

Perform a search operation.
Source§

fn insert(&mut self, args: A::Insert<'_>) -> Result<Self::Output>

Perform an insert operation.
Source§

fn replace(&mut self, args: A::Replace<'_>) -> Result<Self::Output>

Perform a replace operation.
Source§

fn delete(&mut self, args: A::Delete<'_>) -> Result<Self::Output>

Perform a delete operation.
Source§

fn maintain(&mut self, args: A::Maintain<'_>) -> Result<Self::Output>

Perform a maintain operation.
Source§

fn needs_maintenance(&mut self) -> bool

Indicate whether or not maintenance is needed. Executor implementations are responsible periodically checking this.

Auto Trait Implementations§

§

impl<'a, T> Freeze for AnyStream<'a, T>

§

impl<'a, T> RefUnwindSafe for AnyStream<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Send for AnyStream<'a, T>
where T: Send,

§

impl<'a, T> Sync for AnyStream<'a, T>
where T: Sync,

§

impl<'a, T> Unpin for AnyStream<'a, T>

§

impl<'a, T> UnsafeUnpin for AnyStream<'a, T>

§

impl<'a, T> !UnwindSafe for AnyStream<'a, T>

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> DispatchRule<T> for T

Source§

type Error = Infallible

Errors that can occur during convert.
Source§

fn try_match(_from: &T) -> Result<MatchScore, FailureScore>

Attempt to match the value From to the type represented by Self. Read more
Source§

fn convert(from: T) -> Result<T, <T as DispatchRule<T>>::Error>

Perform the actual conversion. Read more
Source§

fn description(f: &mut Formatter<'_>, from: Option<&T>) -> Result<(), Error>

Write a description of the dispatch rule and outcome to the formatter. Read more
Source§

fn try_match_verbose<'a>( from: &'a From, ) -> Result<MatchScore, TaggedFailureScore<'a>>
where Self: 'a,

The equivalent of try_match but returns a reason for a failed score. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> AsyncFriendly for T
where T: Send + Sync + 'static,