Skip to main content

JsFn

Trait JsFn 

pub trait JsFn<A>:
    Send
    + Sync
    + 'static { }
Available on crate features js and std only.
Expand description

A host function with typed, extractor-style arguments.

Implemented for closures of up to twelve JsArg arguments as well as for variadic closures taking a single JsArgs, returning any JsFnOutput. Extra call arguments are ignored (js style), missing ones error unless the parameter is an Option.

The A parameter is an inference marker; ignore it.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

§

impl<F, R, M, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> JsFn<((A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12), M)> for F
where F: Fn(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static, A5: JsArg + 'static, A6: JsArg + 'static, A7: JsArg + 'static, A8: JsArg + 'static, A9: JsArg + 'static, A10: JsArg + 'static, A11: JsArg + 'static, A12: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> JsFn<((A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11), M)> for F
where F: Fn(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static, A5: JsArg + 'static, A6: JsArg + 'static, A7: JsArg + 'static, A8: JsArg + 'static, A9: JsArg + 'static, A10: JsArg + 'static, A11: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> JsFn<((A1, A2, A3, A4, A5, A6, A7, A8, A9, A10), M)> for F
where F: Fn(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static, A5: JsArg + 'static, A6: JsArg + 'static, A7: JsArg + 'static, A8: JsArg + 'static, A9: JsArg + 'static, A10: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3, A4, A5, A6, A7, A8, A9> JsFn<((A1, A2, A3, A4, A5, A6, A7, A8, A9), M)> for F
where F: Fn(A1, A2, A3, A4, A5, A6, A7, A8, A9) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static, A5: JsArg + 'static, A6: JsArg + 'static, A7: JsArg + 'static, A8: JsArg + 'static, A9: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3, A4, A5, A6, A7, A8> JsFn<((A1, A2, A3, A4, A5, A6, A7, A8), M)> for F
where F: Fn(A1, A2, A3, A4, A5, A6, A7, A8) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static, A5: JsArg + 'static, A6: JsArg + 'static, A7: JsArg + 'static, A8: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3, A4, A5, A6, A7> JsFn<((A1, A2, A3, A4, A5, A6, A7), M)> for F
where F: Fn(A1, A2, A3, A4, A5, A6, A7) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static, A5: JsArg + 'static, A6: JsArg + 'static, A7: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3, A4, A5, A6> JsFn<((A1, A2, A3, A4, A5, A6), M)> for F
where F: Fn(A1, A2, A3, A4, A5, A6) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static, A5: JsArg + 'static, A6: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3, A4, A5> JsFn<((A1, A2, A3, A4, A5), M)> for F
where F: Fn(A1, A2, A3, A4, A5) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static, A5: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3, A4> JsFn<((A1, A2, A3, A4), M)> for F
where F: Fn(A1, A2, A3, A4) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static, A4: JsArg + 'static,

§

impl<F, R, M, A1, A2, A3> JsFn<((A1, A2, A3), M)> for F
where F: Fn(A1, A2, A3) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static, A3: JsArg + 'static,

§

impl<F, R, M, A1, A2> JsFn<((A1, A2), M)> for F
where F: Fn(A1, A2) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static, A2: JsArg + 'static,

§

impl<F, R, M, A1> JsFn<((A1,), M)> for F
where F: Fn(A1) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static, A1: JsArg + 'static,

§

impl<F, R, M> JsFn<((), M)> for F
where F: Fn() -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static,

§

impl<F, R, M> JsFn<(VariadicMarker, M)> for F
where F: Fn(JsArgs) -> R + Send + Sync + 'static, R: JsFnOutput<M>, M: 'static,