NonNull<T>

T parameter&T parameter&mut T parameterT return valueOption<T> parameterOption<T> return valueJavaScript representation
YesNoNoYesYesYesA JavaScript number value

Example Rust Usage

#![allow(unused)] fn main() { use std::ptr; use std::ptr::NonNull; use wasm_bindgen::prelude::*; #[wasm_bindgen] pub unsafe fn take_pointer_by_value(x: Option<NonNull<u8>>) { Box::from_raw(x.unwrap().as_ptr()); } #[wasm_bindgen] pub fn return_pointer() -> Option<NonNull<u8>> { Some(NonNull::from(Box::leak(Box::new(42)))) } }

Example JavaScript Usage

import { take_pointer_by_value, return_pointer, } from './guide_supported_types_examples'; import { memory } from './guide_supported_types_examples_bg'; let ptr = return_pointer(); let buf = new Uint8Array(memory.buffer); let value = buf[ptr]; console.log(`The byte at the ${ptr} address is ${value}`); take_pointer_by_value(ptr);