NonNull<T> - The `wasm-bindgen` Guide

# `NonNull<T>`

`T` parameter | `&T` parameter | `&mut T` parameter | `T` return value | `Option<T>` parameter | `Option<T>` return value | JavaScript representation
--- | --- | --- | --- | --- | --- | ---
Yes | No | No | Yes | Yes | Yes | A 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);