[][src]Struct rquickjs::Function

pub struct Function<'js>(_);

Rust representation of a javascript function.

Methods

impl<'js> Function<'js>[src]

pub fn new_static<F, N>(ctx: Ctx<'js>, name: N) -> Result<Self> where
    N: Into<Vec<u8>>,
    F: StaticFn<'js>, 
[src]

Create a new static function.

Static functions do not have any context unlike closures and must implement StaticFn. Static functions have minimal overhead compared to other functions but have more restrictions and require a type to 'carry' the function.

Example

use rquickjs::function::StaticFn;

fn print<'js>(ctx: Ctx<'js>, _this: (), args: (String,)) -> Result<()>{
    println!("{}",args.0);
    Ok(())
}

static_fn!(print,FnPrint,(), (String,),());

context.with(|ctx|{
    let print = Function::new_static::<FnPrint,_>(ctx, "print").unwrap();
    ctx.globals().set("print", print);
    // prints 'hello from javascript' to stdout
    ctx.eval::<(),_>("print('hello from javascript!'); ");
});

pub fn new<F, A, T, R, N>(ctx: Ctx<'js>, name: N, func: F) -> Result<Self> where
    N: Into<Vec<u8>>,
    A: FromJsMulti<'js>,
    T: FromJs<'js>,
    R: ToJs<'js>,
    F: FnMut(Ctx<'js>, T, A) -> Result<R> + 'static, 
[src]

pub fn call<A, R>(&self, args: A) -> Result<R> where
    A: ToJsMulti<'js>,
    R: FromJs<'js>, 
[src]

Call a function with given arguments with the this as the global context object.

pub fn call_on<A, T, R>(&self, this: T, args: A) -> Result<R> where
    A: ToJsMulti<'js>,
    R: FromJs<'js>,
    T: ToJs<'js>, 
[src]

Call a function with given arguments on a given this

pub fn into_object(self) -> Object<'js>[src]

Trait Implementations

impl<'js> Clone for Function<'js>[src]

impl<'js> Debug for Function<'js>[src]

impl<'js> FromJs<'js> for Function<'js>[src]

impl<'js> PartialEq<Function<'js>> for Function<'js>[src]

impl<'js> StructuralPartialEq for Function<'js>[src]

impl<'js> ToAtom<'js> for Function<'js>[src]

impl<'js> ToJs<'js> for Function<'js>[src]

Auto Trait Implementations

impl<'js> !RefUnwindSafe for Function<'js>

impl<'js> !Send for Function<'js>

impl<'js> !Sync for Function<'js>

impl<'js> Unpin for Function<'js>

impl<'js> UnwindSafe for Function<'js>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.