AsyncAccepts

Trait AsyncAccepts 

Source
pub trait AsyncAccepts<Value> {
    // Required method
    fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
       where Value: 'a;
}
Expand description

Receives a value and returns a future that completes once processing finishes.

This mirrors Accepts for asynchronous scenarios where the acceptor must yield until some work is done. The returned future is tied to the lifetime of self, making it straightforward to borrow state inside the async body.

use accepts::AsyncAccepts;
use core::future::Future;

struct AsyncPrinter;

impl AsyncAccepts<String> for AsyncPrinter {
    fn accept_async<'a>(&'a self, value: String) -> impl Future<Output = ()> + 'a
    where
        String: 'a,
    {
        async move {
            println!("{}", value);
        }
    }
}

let printer = AsyncPrinter;
printer
    .accept_async(String::from("Hello, async world!"))
    .await;

Required Methods§

Source

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

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: AsyncAccepts<Value> + ?Sized, Value> AsyncAccepts<Value> for &T

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<T: AsyncAccepts<Value> + ?Sized, Value> AsyncAccepts<Value> for &mut T

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<T: AsyncAccepts<Value> + ?Sized, Value> AsyncAccepts<Value> for Box<T>

Available on crate feature alloc only.
Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<T: AsyncAccepts<Value> + ?Sized, Value> AsyncAccepts<Value> for Rc<T>

Available on crate feature alloc only.
Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<T: AsyncAccepts<Value> + ?Sized, Value> AsyncAccepts<Value> for Arc<T>

Available on crate feature alloc only.
Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value> AsyncAccepts<Value> for ()

Source§

fn accept_async<'a>(&'a self, _: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>> AsyncAccepts<Value> for Option<A>

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>> AsyncAccepts<Value> for (A,)

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>, E: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D, E)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>, E: AsyncAccepts<Value>, F: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D, E, F)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>, E: AsyncAccepts<Value>, F: AsyncAccepts<Value>, G: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D, E, F, G)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>, E: AsyncAccepts<Value>, F: AsyncAccepts<Value>, G: AsyncAccepts<Value>, H: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D, E, F, G, H)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>, E: AsyncAccepts<Value>, F: AsyncAccepts<Value>, G: AsyncAccepts<Value>, H: AsyncAccepts<Value>, I: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D, E, F, G, H, I)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>, E: AsyncAccepts<Value>, F: AsyncAccepts<Value>, G: AsyncAccepts<Value>, H: AsyncAccepts<Value>, I: AsyncAccepts<Value>, J: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D, E, F, G, H, I, J)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>, E: AsyncAccepts<Value>, F: AsyncAccepts<Value>, G: AsyncAccepts<Value>, H: AsyncAccepts<Value>, I: AsyncAccepts<Value>, J: AsyncAccepts<Value>, K: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D, E, F, G, H, I, J, K)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, B: AsyncAccepts<Value>, C: AsyncAccepts<Value>, D: AsyncAccepts<Value>, E: AsyncAccepts<Value>, F: AsyncAccepts<Value>, G: AsyncAccepts<Value>, H: AsyncAccepts<Value>, I: AsyncAccepts<Value>, J: AsyncAccepts<Value>, K: AsyncAccepts<Value>, L: AsyncAccepts<Value>> AsyncAccepts<Value> for (A, B, C, D, E, F, G, H, I, J, K, L)
where Value: Clone,

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value, A: AsyncAccepts<Value>, E> AsyncAccepts<Value> for Result<A, E>

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value: Clone, A: AsyncAccepts<Value>> AsyncAccepts<Value> for [A]

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value: Clone, A: AsyncAccepts<Value>> AsyncAccepts<Value> for VecDeque<A>

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value: Clone, A: AsyncAccepts<Value>> AsyncAccepts<Value> for Vec<A>

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Source§

impl<Value: Clone, A: AsyncAccepts<Value>, const N: usize> AsyncAccepts<Value> for [A; N]

Source§

fn accept_async<'a>(&'a self, value: Value) -> impl Future<Output = ()> + 'a
where Value: 'a,

Implementors§