Struct drop_stream::DropStream

source ·
pub struct DropStream<S: Stream<Item = T> + Unpin, T, U: FnOnce()> { /* private fields */ }
Expand description

A stream that wraps another stream with a closure that is called once it is dropped. Very useful for libraries that use streams for data transfer and you need to connect when the opposite site drops the connection, thus dropping the stream.

Example

use futures::Stream;
use drop_stream::DropStream;

let test_stream = futures::stream::repeat(true);
{
    let wrapped_stream = DropStream::new(test_stream, move || {
        println!("Stream has been dropped!");
    });

    let mut wrapped_stream = Box::pin(wrapped_stream);

    let waker = futures::task::noop_waker();
    let mut context = futures::task::Context::from_waker(&waker);
    assert_eq!(
        wrapped_stream.as_mut().poll_next(&mut context),
        std::task::Poll::Ready(Some(true))
    );
}

Implementations

Trait Implementations

Executes the destructor for this type. Read more
Values yielded by the stream.
Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more
Returns the bounds on the remaining length of the stream. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
The type of successful values yielded by this future
The type of failures yielded by this future
Poll this TryStream as if it were a Stream. Read more