mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-01 06:46:20 +03:00
6561fba947
* Changed eslintrc to be JSON file (Most projects use JSON version) * Added .eslintignore to ingore node_modules from subdirectories such as examples * Ran eslint --fix examples to fix all examples * Added npm script for running eslint against examples * Added npm script for running eslint against generated *out* code * Hooked npm scripts into travis ci to prevent examples from becoming inconsistent with future PR's
33 lines
934 B
JavaScript
33 lines
934 B
JavaScript
import { Foo, Bar, concat } from './smorgasboard';
|
|
|
|
function assertEq(a, b) {
|
|
if (a !== b)
|
|
throw new Error(`${a} != ${b}`);
|
|
console.log(`found ${a} === ${b}`);
|
|
}
|
|
|
|
assertEq(concat('a', 'b'), 'ab');
|
|
|
|
// Note that to use `new Foo()` the constructor function must be annotated
|
|
// with `#[wasm_bindgen(constructor)]`, otherwise only `Foo.new()` can be used.
|
|
// Additionally objects allocated corresponding to Rust structs will need to
|
|
// be deallocated on the Rust side of things with an explicit call to `free`.
|
|
let foo = new Foo();
|
|
assertEq(foo.add(10), 10);
|
|
foo.free();
|
|
|
|
// Pass objects to one another
|
|
let foo1 = new Foo();
|
|
let bar = Bar.from_str('22', { opaque: 'object' });
|
|
foo1.add_other(bar);
|
|
|
|
// We also don't have to `free` the `bar` variable as this function is
|
|
// transferring ownership to `foo1`
|
|
bar.reset('34');
|
|
foo1.consume_other(bar);
|
|
|
|
assertEq(foo1.add(2), 22 + 34 + 2);
|
|
foo1.free();
|
|
|
|
alert('all passed!');
|