chakracore-rs

This is a wrapper around the JavaScript Runtime (JSRT), used in Microsoft Edge and node-chakracore. The library is still in pre-release and is not yet stable. The tests try to cover as much functionality as possible but memory leaks and segfaults may occur. If you want a more stable library, use the underlying API directly: chakracore-sys.

Documentation

https://docs.rs/chakracore

Installation

Add this to your Cargo.toml:

toml [dependencies] chakracore = "0.1.0"

... and this to your crate root:

rust extern crate chakracore as js;

This library, by itself is simple and easily installed, but its chakracore-sys dependency is not. To ensure a successful build, please view the chakracore-sys build instructions.

Example

Hello World

```rust extern crate chakracore as js;

fn main() { let runtime = js::Runtime::new().unwrap(); let context = js::Context::new(&runtime).unwrap(); let guard = context.make_current().unwrap();

let result = js::script::eval(&guard, "(5 + 5)").unwrap(); asserteq!(result.tointeger(&guard), 10); } ```

Function - Multiply

```rust extern crate chakracore as js;

fn main() { let runtime = js::Runtime::new().unwrap(); let context = js::Context::new(&runtime).unwrap(); let guard = context.make_current().unwrap();

let multiply = js::value::Function::new(&guard, Box::new(|guard, info| { let result = info.arguments[0].tointeger(guard) * info.arguments[1].tointeger(guard); Ok(js::value::Number::new(guard, result).into()) }));

let result = multiply.call(&guard, &[ &js::value::Number::new(&guard, 191).into(), &js::value::Number::new(&guard, 7).into(), ]).unwrap();

asserteq!(result.tointeger(&guard), 1337); } ```