Trait Extend

Source
pub trait Extend<A> {
    // Required method
    fn extend<'a, T: IntoStream<Item = A> + 'a>(
        &'a mut self,
        stream: T,
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
       where <T as IntoStream>::IntoStream: Send;
}
Available on unstable only.
Expand description

Extends a collection with the contents of a stream.

Streams produce a series of values asynchronously, and collections can also be thought of as a series of values. The Extend trait bridges this gap, allowing you to extend a collection asynchronously by including the contents of that stream. When extending a collection with an already existing key, that entry is updated or, in the case of collections that permit multiple entries with equal keys, that entry is inserted.

§Examples

use async_std::prelude::*;
use async_std::stream;

let mut v: Vec<usize> = vec![1, 2];
let s = stream::repeat(3usize).take(3);
stream::Extend::extend(&mut v, s).await;

assert_eq!(v, vec![1, 2, 3, 3, 3]);

Required Methods§

Source

fn extend<'a, T: IntoStream<Item = A> + 'a>( &'a mut self, stream: T, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <T as IntoStream>::IntoStream: Send,

Extends a collection with the contents of a stream.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Extend<char> for String

Source§

fn extend<'a, S: IntoStream<Item = char> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl Extend<()> for ()

Source§

fn extend<'a, S: IntoStream<Item = ()> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl Extend<String> for String

Source§

fn extend<'a, S: IntoStream<Item = String> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<'b> Extend<&'b char> for String

Source§

fn extend<'a, S: IntoStream<Item = &'b char> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<'b> Extend<&'b str> for String

Source§

fn extend<'a, S: IntoStream<Item = &'b str> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<'b> Extend<Cow<'b, str>> for String

Source§

fn extend<'a, S: IntoStream<Item = Cow<'b, str>> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<K, V, H> Extend<(K, V)> for HashMap<K, V, H>
where K: Eq + Hash + Send, V: Send, H: BuildHasher + Default + Send,

Source§

fn extend<'a, S: IntoStream<Item = (K, V)> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<K: Ord + Send, V: Send> Extend<(K, V)> for BTreeMap<K, V>

Source§

fn extend<'a, S: IntoStream<Item = (K, V)> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<T, H> Extend<T> for HashSet<T, H>
where T: Eq + Hash + Send, H: BuildHasher + Default + Send,

Source§

fn extend<'a, S: IntoStream<Item = T> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<T: Ord + Send> Extend<T> for BinaryHeap<T>

Source§

fn extend<'a, S: IntoStream<Item = T> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<T: Ord + Send> Extend<T> for BTreeSet<T>

Source§

fn extend<'a, S: IntoStream<Item = T> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<T: Send> Extend<T> for LinkedList<T>

Source§

fn extend<'a, S: IntoStream<Item = T> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<T: Send> Extend<T> for VecDeque<T>

Source§

fn extend<'a, S: IntoStream<Item = T> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Source§

impl<T: Send> Extend<T> for Vec<T>

Source§

fn extend<'a, S: IntoStream<Item = T> + 'a>( &'a mut self, stream: S, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>
where <S as IntoStream>::IntoStream: Send,

Implementors§

Source§

impl<P: AsRef<Path>> Extend<P> for PathBuf