JsValue
T parameter | &T parameter | &mut T parameter | T return value | Option<T> parameter | Option<T> return value | JavaScript representation |
|---|---|---|---|---|---|---|
| Yes | Yes | No | Yes | No | No | Any JavaScript value |
JsValue is also the default representation for many erasable generic types at the ABI boundary.
&[JsValue] slices
You can pass &[JsValue] slices from Rust to JavaScript. The slice is passed as
a JavaScript Array.
#![allow(unused)]
fn main() {
#[wasm_bindgen]
extern "C" {
fn process_values(values: &[JsValue]);
}
pub fn call_js() {
let values: Vec<JsValue> = vec![1.into(), "hello".into(), true.into()];
process_values(&values);
}
}
Example Rust Usage
#![allow(unused)]
fn main() {
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn take_js_value_by_value(x: JsValue) {}
#[wasm_bindgen]
pub fn take_js_value_by_shared_ref(x: &JsValue) {}
#[wasm_bindgen]
pub fn return_js_value() -> JsValue {
JsValue::NULL
}
}
Example JavaScript Usage
import {
take_js_value_by_value,
take_js_value_by_shared_ref,
return_js_value,
} from './guide_supported_types_examples';
take_js_value_by_value(42);
take_js_value_by_shared_ref('hello');
let v = return_js_value();