Skip to main content

AsyncMap

Struct AsyncMap 

Source
pub struct AsyncMap<I, F> { /* private fields */ }
Expand description

An asynchronous iterator adapter that maps each item to a new value using an async function.

AsyncMap is similar to the standard .map() method on iterators, but it supports asynchronous closures by allowing the mapping function to return a Future. This makes it useful for scenarios where each item in an iterator needs to be processed using asynchronous logic.

This struct is created by the .map_async() method on AsyncIterTools.

§Type Parameters

  • I: The underlying async iterator.
  • F: The asynchronous mapping function, which produces a future for each item.

Trait Implementations§

Source§

impl<B, I, F, Fut> AsyncIterator for AsyncMap<I, F>
where I: AsyncIterator, F: FnMut(I::Item) -> Fut + Send, Fut: Future<Output = B> + Send,

Implements the AsyncIterator trait for AsyncMap, yielding the result of applying the async mapping function f to each item from the underlying iterator iter.

The next_async() method awaits the next item and then applies the mapping function, awaiting its result before yielding it downstream.

Source§

type Item = B

The type of the elements being iterated over.
Source§

async fn next_async(&mut self) -> Option<Self::Item>

Asynchronously returns the next item in the iterator. Read more
Source§

fn async_size_hint(&self) -> (usize, Option<usize>)

Provides a hint about the size of the remaining items. Read more
Source§

fn sync_iter(&mut self) -> impl Future<Output = SyncIter<IntoIter<Self::Item>>>
where Self: Sized,

Converts this async iterator into a synchronous SyncIter using async collection. Read more
Source§

fn async_collect<B>(self) -> impl Future<Output = B>
where Self: Sized, B: FromIterator<Self::Item>,

Collects all items of the async iterator into a container type. Read more
Source§

impl<I, F> Debug for AsyncMap<I, F>
where I: AsyncIterator + Debug,

Provides a Debug implementation for AsyncMap that includes debug output for the underlying iterator. The mapping function f is not shown due to lack of generic support for Debug on closures.

Source§

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

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

impl<B, I, F, Fut> Future for AsyncMap<I, F>
where I: AsyncIterator + Unpin, F: FnMut(I::Item) -> Fut + Unpin + Send, Fut: Future<Output = B> + Send,

Allows an AsyncMap to be .awaited directly, returning a synchronous iterator (SyncIter) over the collected results of the async mapping operation. This makes it possible to use .await on AsyncMap to collect all results at once in blocking contexts like block_on.

Source§

type Output = SyncIter<IntoIter<B>>

The type of value produced on completion.
Source§

fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>

Attempts to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more
Source§

impl<B, I, F, Fut> PollSyncIter for AsyncMap<I, F>
where I: AsyncIterator + Unpin, F: FnMut(I::Item) -> Fut + Unpin + Send, Fut: Future<Output = B> + Send,

Enables conversion of an AsyncMap into a synchronous SyncIter by polling the async iterator and collecting items into a vector. Implements the PollSyncIter trait, allowing integration with the Future implementation below.

Source§

fn poll_sync_iter( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<SyncIter<IntoIter<Self::Item>>>
where Self: Sized + Unpin,

Auto Trait Implementations§

§

impl<I, F> Freeze for AsyncMap<I, F>
where I: Freeze, F: Freeze,

§

impl<I, F> RefUnwindSafe for AsyncMap<I, F>

§

impl<I, F> Send for AsyncMap<I, F>
where I: Send, F: Send,

§

impl<I, F> Sync for AsyncMap<I, F>
where I: Sync, F: Sync,

§

impl<I, F> Unpin for AsyncMap<I, F>
where I: Unpin, F: Unpin,

§

impl<I, F> UnsafeUnpin for AsyncMap<I, F>
where I: UnsafeUnpin, F: UnsafeUnpin,

§

impl<I, F> UnwindSafe for AsyncMap<I, F>
where I: UnwindSafe, F: 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> AsyncIterTools for T
where T: AsyncIterator + ?Sized,

Source§

fn for_each_async<F, Fut>(self, f: F) -> impl Future<Output = ()>
where Self: Sized, F: Fn(Self::Item) -> Fut, Fut: Future<Output = ()>,

Calls an async closure on each element of an iterator Read more
Source§

fn map_async<B, F, Fut>(self, f: F) -> AsyncMap<Self, F>
where Self: Sized, F: Fn(Self::Item) -> Fut, Fut: Future<Output = B>,

Applies an async closure to each item of the iterator, returning a new iterator of the results of each async computation. Read more
Source§

fn filter_async<F, Fut>(self, f: F) -> AsyncFilter<Self, F>
where Self: Sized, F: Fn(Self::Item) -> Fut, Fut: Future<Output = bool>, Self::Item: Clone,

Filters the items of an iterator using an asynchronous predicate. Read more
Source§

fn process_results<T, E>(self) -> ProcessResults<Self, T, E>
where Self: Sized + AsyncIterator<Item = Result<T, E>>,

Consumes the async iterator and returns a ProcessResults future that collects successes and errors based on a specified strategy. 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<F> IntoFuture for F
where F: Future,

Source§

type Output = <F as Future>::Output

The output that the future will produce on completion.
Source§

type IntoFuture = F

Which kind of future are we turning this into?
Source§

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. 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.