Trait AsyncOptionExt

Source
pub trait AsyncOptionExt<T> {
    // Required method
    async fn async_map<U, Fut: Future<Output = U>, F: FnOnce(T) -> Fut>(
        self,
        f: F,
    ) -> Option<U>;
}

Required Methods§

Source

async fn async_map<U, Fut: Future<Output = U>, F: FnOnce(T) -> Fut>( self, f: F, ) -> Option<U>

Maps an Option<T> to Option<U> by applying a function to a contained value (if Some) or returns None (if None).

§Example
use composable_utils::AsyncOptionExt;

async fn double(x: usize) -> usize {
    x * 2
}

async_io::block_on(async {
    let value = Some(69);
    let value = value
        .async_map(|v| async move { double(v).await })
        .await
        .unwrap_or_else(|| panic!("value should always be Some"));
    assert_eq!(value, 138);
});

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<T> AsyncOptionExt<T> for Option<T>

Source§

async fn async_map<U, Fut: Future<Output = U>, F: FnOnce(T) -> Fut>( self, f: F, ) -> Option<U>

Implementors§