pub trait AsFunction<'js, A, R> {
    // Required methods
    fn num_args() -> Range<usize>;
    fn call(&self, input: &Input<'js>) -> Result<Value<'js>>;

    // Provided method
    fn post<'js_>(_ctx: Ctx<'js_>, _func: &Function<'js_>) -> Result<()> { ... }
}
Expand description

The trait to wrap rust function to JS directly

Required Methods§

source

fn num_args() -> Range<usize>

The possible range of function arguments

source

fn call(&self, input: &Input<'js>) -> Result<Value<'js>>

Call as JS function

Provided Methods§

source

fn post<'js_>(_ctx: Ctx<'js_>, _func: &Function<'js_>) -> Result<()>

Post-processing the function

Implementations on Foreign Types§

source§

impl<'js, F1, A1, R1, F2, A2, R2, F3, A3, R3, F4, A4, R4> AsFunction<'js, (A1, A2, A3, A4), (R1, R2, R3, R4)> for (F1, F2, F3, F4)where F1: AsFunction<'js, A1, R1> + 'js, F2: AsFunction<'js, A2, R2> + 'js, F3: AsFunction<'js, A3, R3> + 'js, F4: AsFunction<'js, A4, R4> + 'js,

source§

fn num_args() -> Range<usize>

source§

fn call(&self, input: &Input<'js>) -> Result<Value<'js>>

source§

fn post<'js_>(ctx: Ctx<'js_>, func: &Function<'js_>) -> Result<()>

source§

impl<'js, F1, A1, R1, F2, A2, R2, F3, A3, R3> AsFunction<'js, (A1, A2, A3), (R1, R2, R3)> for (F1, F2, F3)where F1: AsFunction<'js, A1, R1> + 'js, F2: AsFunction<'js, A2, R2> + 'js, F3: AsFunction<'js, A3, R3> + 'js,

source§

fn num_args() -> Range<usize>

source§

fn call(&self, input: &Input<'js>) -> Result<Value<'js>>

source§

fn post<'js_>(ctx: Ctx<'js_>, func: &Function<'js_>) -> Result<()>

source§

impl<'js, F1, A1, R1, F2, A2, R2> AsFunction<'js, (A1, A2), (R1, R2)> for (F1, F2)where F1: AsFunction<'js, A1, R1> + 'js, F2: AsFunction<'js, A2, R2> + 'js,

source§

fn num_args() -> Range<usize>

source§

fn call(&self, input: &Input<'js>) -> Result<Value<'js>>

source§

fn post<'js_>(ctx: Ctx<'js_>, func: &Function<'js_>) -> Result<()>

source§

impl<'js, F1, A1, R1, F2, A2, R2, F3, A3, R3, F4, A4, R4, F5, A5, R5> AsFunction<'js, (A1, A2, A3, A4, A5), (R1, R2, R3, R4, R5)> for (F1, F2, F3, F4, F5)where F1: AsFunction<'js, A1, R1> + 'js, F2: AsFunction<'js, A2, R2> + 'js, F3: AsFunction<'js, A3, R3> + 'js, F4: AsFunction<'js, A4, R4> + 'js, F5: AsFunction<'js, A5, R5> + 'js,

source§

fn num_args() -> Range<usize>

source§

fn call(&self, input: &Input<'js>) -> Result<Value<'js>>

source§

fn post<'js_>(ctx: Ctx<'js_>, func: &Function<'js_>) -> Result<()>

source§

impl<'js, F1, A1, R1, F2, A2, R2, F3, A3, R3, F4, A4, R4, F5, A5, R5, F6, A6, R6> AsFunction<'js, (A1, A2, A3, A4, A5, A6), (R1, R2, R3, R4, R5, R6)> for (F1, F2, F3, F4, F5, F6)where F1: AsFunction<'js, A1, R1> + 'js, F2: AsFunction<'js, A2, R2> + 'js, F3: AsFunction<'js, A3, R3> + 'js, F4: AsFunction<'js, A4, R4> + 'js, F5: AsFunction<'js, A5, R5> + 'js, F6: AsFunction<'js, A6, R6> + 'js,

source§

fn num_args() -> Range<usize>

source§

fn call(&self, input: &Input<'js>) -> Result<Value<'js>>

source§

fn post<'js_>(ctx: Ctx<'js_>, func: &Function<'js_>) -> Result<()>

Implementors§

source§

impl<'js, C, F, A, R> AsFunction<'js, A, R> for Constructor<C, F>where C: ClassDef + 'js, F: AsFunction<'js, A, R> + 'js,

source§

impl<'js, F, Fut, R> AsFunction<'js, (), Promised<R>> for Async<MutFn<F>>where F: FnMut() -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js,

source§

impl<'js, F, Fut, R> AsFunction<'js, (), Promised<R>> for Async<OnceFn<F>>where F: FnOnce() -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js,

source§

impl<'js, F, Fut, R> AsFunction<'js, (), Promised<R>> for Async<F>where F: Fn() -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js,

source§

impl<'js, F, Fut, R, A> AsFunction<'js, (A,), Promised<R>> for Async<MutFn<F>>where F: FnMut(A) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>,

source§

impl<'js, F, Fut, R, A> AsFunction<'js, (A,), Promised<R>> for Async<OnceFn<F>>where F: FnOnce(A) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>,

source§

impl<'js, F, Fut, R, A> AsFunction<'js, (A,), Promised<R>> for Async<F>where F: Fn(A) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B> AsFunction<'js, (A, B), Promised<R>> for Async<MutFn<F>>where F: FnMut(A, B) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B> AsFunction<'js, (A, B), Promised<R>> for Async<OnceFn<F>>where F: FnOnce(A, B) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B> AsFunction<'js, (A, B), Promised<R>> for Async<F>where F: Fn(A, B) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D> AsFunction<'js, (A, B, D), Promised<R>> for Async<MutFn<F>>where F: FnMut(A, B, D) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D> AsFunction<'js, (A, B, D), Promised<R>> for Async<OnceFn<F>>where F: FnOnce(A, B, D) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D> AsFunction<'js, (A, B, D), Promised<R>> for Async<F>where F: Fn(A, B, D) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E> AsFunction<'js, (A, B, D, E), Promised<R>> for Async<MutFn<F>>where F: FnMut(A, B, D, E) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E> AsFunction<'js, (A, B, D, E), Promised<R>> for Async<OnceFn<F>>where F: FnOnce(A, B, D, E) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E> AsFunction<'js, (A, B, D, E), Promised<R>> for Async<F>where F: Fn(A, B, D, E) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E, G> AsFunction<'js, (A, B, D, E, G), Promised<R>> for Async<MutFn<F>>where F: FnMut(A, B, D, E, G) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E, G> AsFunction<'js, (A, B, D, E, G), Promised<R>> for Async<OnceFn<F>>where F: FnOnce(A, B, D, E, G) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E, G> AsFunction<'js, (A, B, D, E, G), Promised<R>> for Async<F>where F: Fn(A, B, D, E, G) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E, G, H> AsFunction<'js, (A, B, D, E, G, H), Promised<R>> for Async<MutFn<F>>where F: FnMut(A, B, D, E, G, H) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>, H: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E, G, H> AsFunction<'js, (A, B, D, E, G, H), Promised<R>> for Async<OnceFn<F>>where F: FnOnce(A, B, D, E, G, H) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>, H: FromInput<'js>,

source§

impl<'js, F, Fut, R, A, B, D, E, G, H> AsFunction<'js, (A, B, D, E, G, H), Promised<R>> for Async<F>where F: Fn(A, B, D, E, G, H) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>, H: FromInput<'js>,

source§

impl<'js, F, Fut, R, T> AsFunction<'js, (T,), Promised<R>> for Async<Method<F>>where F: Fn(T) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, T: FromJs<'js>,

source§

impl<'js, F, Fut, R, T, A> AsFunction<'js, (T, A), Promised<R>> for Async<Method<F>>where F: Fn(T, A) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, T: FromJs<'js>, A: FromInput<'js>,

source§

impl<'js, F, Fut, R, T, A, B> AsFunction<'js, (T, A, B), Promised<R>> for Async<Method<F>>where F: Fn(T, A, B) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>,

source§

impl<'js, F, Fut, R, T, A, B, D> AsFunction<'js, (T, A, B, D), Promised<R>> for Async<Method<F>>where F: Fn(T, A, B, D) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>,

source§

impl<'js, F, Fut, R, T, A, B, D, E> AsFunction<'js, (T, A, B, D, E), Promised<R>> for Async<Method<F>>where F: Fn(T, A, B, D, E) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>,

source§

impl<'js, F, Fut, R, T, A, B, D, E, G> AsFunction<'js, (T, A, B, D, E, G), Promised<R>> for Async<Method<F>>where F: Fn(T, A, B, D, E, G) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>,

source§

impl<'js, F, Fut, R, T, A, B, D, E, G, H> AsFunction<'js, (T, A, B, D, E, G, H), Promised<R>> for Async<Method<F>>where F: Fn(T, A, B, D, E, G, H) -> Fut + 'js, Fut: Future<Output = Result<R>> + 'js, R: IntoJs<'js> + 'js, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>, H: FromInput<'js>,

source§

impl<'js, F, R> AsFunction<'js, (), R> for MutFn<F>where F: FnMut() -> R + 'js, R: IntoJs<'js>,

source§

impl<'js, F, R> AsFunction<'js, (), R> for OnceFn<F>where F: FnOnce() -> R + 'js, R: IntoJs<'js>,

source§

impl<'js, F, R> AsFunction<'js, (), R> for Fwhere F: Fn() -> R + 'js, R: IntoJs<'js>,

source§

impl<'js, F, R, A> AsFunction<'js, (A,), R> for MutFn<F>where F: FnMut(A) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>,

source§

impl<'js, F, R, A> AsFunction<'js, (A,), R> for OnceFn<F>where F: FnOnce(A) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>,

source§

impl<'js, F, R, A> AsFunction<'js, (A,), R> for Fwhere F: Fn(A) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>,

source§

impl<'js, F, R, A, B> AsFunction<'js, (A, B), R> for MutFn<F>where F: FnMut(A, B) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>,

source§

impl<'js, F, R, A, B> AsFunction<'js, (A, B), R> for OnceFn<F>where F: FnOnce(A, B) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>,

source§

impl<'js, F, R, A, B> AsFunction<'js, (A, B), R> for Fwhere F: Fn(A, B) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>,

source§

impl<'js, F, R, A, B, D> AsFunction<'js, (A, B, D), R> for MutFn<F>where F: FnMut(A, B, D) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>,

source§

impl<'js, F, R, A, B, D> AsFunction<'js, (A, B, D), R> for OnceFn<F>where F: FnOnce(A, B, D) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>,

source§

impl<'js, F, R, A, B, D> AsFunction<'js, (A, B, D), R> for Fwhere F: Fn(A, B, D) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E> AsFunction<'js, (A, B, D, E), R> for MutFn<F>where F: FnMut(A, B, D, E) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E> AsFunction<'js, (A, B, D, E), R> for OnceFn<F>where F: FnOnce(A, B, D, E) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E> AsFunction<'js, (A, B, D, E), R> for Fwhere F: Fn(A, B, D, E) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E, G> AsFunction<'js, (A, B, D, E, G), R> for MutFn<F>where F: FnMut(A, B, D, E, G) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E, G> AsFunction<'js, (A, B, D, E, G), R> for OnceFn<F>where F: FnOnce(A, B, D, E, G) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E, G> AsFunction<'js, (A, B, D, E, G), R> for Fwhere F: Fn(A, B, D, E, G) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E, G, H> AsFunction<'js, (A, B, D, E, G, H), R> for MutFn<F>where F: FnMut(A, B, D, E, G, H) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>, H: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E, G, H> AsFunction<'js, (A, B, D, E, G, H), R> for OnceFn<F>where F: FnOnce(A, B, D, E, G, H) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>, H: FromInput<'js>,

source§

impl<'js, F, R, A, B, D, E, G, H> AsFunction<'js, (A, B, D, E, G, H), R> for Fwhere F: Fn(A, B, D, E, G, H) -> R + 'js, R: IntoJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>, H: FromInput<'js>,

source§

impl<'js, F, R, T> AsFunction<'js, (T,), R> for Method<F>where F: Fn(T) -> R + 'js, R: IntoJs<'js>, T: FromJs<'js>,

source§

impl<'js, F, R, T, A> AsFunction<'js, (T, A), R> for Method<F>where F: Fn(T, A) -> R + 'js, R: IntoJs<'js>, T: FromJs<'js>, A: FromInput<'js>,

source§

impl<'js, F, R, T, A, B> AsFunction<'js, (T, A, B), R> for Method<F>where F: Fn(T, A, B) -> R + 'js, R: IntoJs<'js>, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>,

source§

impl<'js, F, R, T, A, B, D> AsFunction<'js, (T, A, B, D), R> for Method<F>where F: Fn(T, A, B, D) -> R + 'js, R: IntoJs<'js>, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>,

source§

impl<'js, F, R, T, A, B, D, E> AsFunction<'js, (T, A, B, D, E), R> for Method<F>where F: Fn(T, A, B, D, E) -> R + 'js, R: IntoJs<'js>, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>,

source§

impl<'js, F, R, T, A, B, D, E, G> AsFunction<'js, (T, A, B, D, E, G), R> for Method<F>where F: Fn(T, A, B, D, E, G) -> R + 'js, R: IntoJs<'js>, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>,

source§

impl<'js, F, R, T, A, B, D, E, G, H> AsFunction<'js, (T, A, B, D, E, G, H), R> for Method<F>where F: Fn(T, A, B, D, E, G, H) -> R + 'js, R: IntoJs<'js>, T: FromJs<'js>, A: FromInput<'js>, B: FromInput<'js>, D: FromInput<'js>, E: FromInput<'js>, G: FromInput<'js>, H: FromInput<'js>,