Caller

Trait Caller 

Source
pub trait Caller<Args, Pro, Err> {
    type Output;
    type Future: Future<Output = Self::Output>;

    // Required method
    fn call(&self, args: Args) -> Self::Future;
}
Expand description

The interface for calling a function with arguments. Is implemented for tuples of up to 26 items to allow for up to 26 arguments.

§Example

async fn add(a: i32, b: i32) -> i32 {
    a + b
}

add.call((1, 2)).await;

Required Associated Types§

Source

type Output

Source

type Future: Future<Output = Self::Output>

Required Methods§

Source

fn call(&self, args: Args) -> Self::Future

Implementors§

Source§

impl<Func, Fut, Pro, Err, A> Caller<(A,), Pro, Err> for Func
where Func: Fn(A) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B> Caller<(A, B), Pro, Err> for Func
where Func: Fn(A, B) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C> Caller<(A, B, C), Pro, Err> for Func
where Func: Fn(A, B, C) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D> Caller<(A, B, C, D), Pro, Err> for Func
where Func: Fn(A, B, C, D) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E> Caller<(A, B, C, D, E), Pro, Err> for Func
where Func: Fn(A, B, C, D, E) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F> Caller<(A, B, C, D, E, F), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G> Caller<(A, B, C, D, E, F, G), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H> Caller<(A, B, C, D, E, F, G, H), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I> Caller<(A, B, C, D, E, F, G, H, I), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J> Caller<(A, B, C, D, E, F, G, H, I, J), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K> Caller<(A, B, C, D, E, F, G, H, I, J, K), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L> Caller<(A, B, C, D, E, F, G, H, I, J, K, L), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err> + Extract<S, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err> + Extract<S, Err> + Extract<T, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err> + Extract<S, Err> + Extract<T, Err> + Extract<U, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err> + Extract<S, Err> + Extract<T, Err> + Extract<U, Err> + Extract<V, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err> + Extract<S, Err> + Extract<T, Err> + Extract<U, Err> + Extract<V, Err> + Extract<W, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err> + Extract<S, Err> + Extract<T, Err> + Extract<U, Err> + Extract<V, Err> + Extract<W, Err> + Extract<X, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err> + Extract<S, Err> + Extract<T, Err> + Extract<U, Err> + Extract<V, Err> + Extract<W, Err> + Extract<X, Err> + Extract<Y, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut

Source§

impl<Func, Fut, Pro, Err, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z> Caller<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z), Pro, Err> for Func
where Func: Fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z) -> Fut + Clone + 'static, Fut: Future, Pro: Extract<A, Err> + Extract<B, Err> + Extract<C, Err> + Extract<D, Err> + Extract<E, Err> + Extract<F, Err> + Extract<G, Err> + Extract<H, Err> + Extract<I, Err> + Extract<J, Err> + Extract<K, Err> + Extract<L, Err> + Extract<M, Err> + Extract<N, Err> + Extract<O, Err> + Extract<P, Err> + Extract<Q, Err> + Extract<R, Err> + Extract<S, Err> + Extract<T, Err> + Extract<U, Err> + Extract<V, Err> + Extract<W, Err> + Extract<X, Err> + Extract<Y, Err> + Extract<Z, Err>, Err: Error,

Source§

type Output = <Fut as Future>::Output

Source§

type Future = Fut