mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-15 09:40:52 +00:00
guide: Add examples of boxed number slices
This commit is contained in:
parent
8043baac69
commit
9c9e53485a
@ -8,3 +8,4 @@ import * as js_value from './js_value.js';
|
||||
import * as boxed_js_value_slice from './boxed_js_value_slice.js';
|
||||
import * as pointers from './pointers.js';
|
||||
import * as numbers from './numbers.js';
|
||||
import * as boxed_number_slices from './boxed_number_slices.js';
|
||||
|
@ -0,0 +1,22 @@
|
||||
import {
|
||||
take_boxed_number_slice_by_value,
|
||||
return_boxed_number_slice,
|
||||
take_option_boxed_number_slice,
|
||||
return_option_boxed_number_slice,
|
||||
} from './guide_supported_types_examples';
|
||||
|
||||
take_boxed_number_slice_by_value(new Uint8Array(100));
|
||||
|
||||
let x = return_boxed_number_slice();
|
||||
console.log(x instanceof Uint32Array); // true
|
||||
|
||||
take_option_boxed_number_slice(null);
|
||||
take_option_boxed_number_slice(undefined);
|
||||
take_option_boxed_number_slice(new Int16Array(256));
|
||||
|
||||
let y = return_option_boxed_number_slice();
|
||||
if (y == null) {
|
||||
// ...
|
||||
} else {
|
||||
console.log(x instanceof Int32Array); // true
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
use wasm_bindgen::prelude::*;
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn take_boxed_number_slice_by_value(x: Box<[f64]>) {}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn return_boxed_number_slice() -> Box<[u32]> {
|
||||
(0..42).collect::<Vec<u32>>().into_boxed_slice()
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn take_option_boxed_number_slice(x: Option<Box<[u8]>>) {}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn return_option_boxed_number_slice() -> Option<Box<[i32]>> {
|
||||
None
|
||||
}
|
@ -13,3 +13,4 @@ pub mod js_value;
|
||||
pub mod boxed_js_value_slice;
|
||||
pub mod pointers;
|
||||
pub mod numbers;
|
||||
pub mod boxed_number_slices;
|
||||
|
@ -197,10 +197,23 @@ garbage-collected heap and the Wasm linear memory with `TextDecoder` and
|
||||
|
||||
| `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 `TypedArray` view of the Wasm memory for the boxed slice of the appropriate type (`Int32Array`, `Uint8Array`, etc) |
|
||||
| Yes | No | No | Yes | Yes | Yes | A JavaScript `TypedArray` of the appropriate type (`Int32Array`, `Uint8Array`, etc...) |
|
||||
|
||||
Note that this does ***not*** copy the whole slice of memory back and forth into
|
||||
the JavaScript heap from the Wasm linear memory.
|
||||
Note that the contents of the slice are copied into the JavaScript `TypedArray`
|
||||
from the Wasm linear memory when returning a boxed slice to JavaScript, and vice
|
||||
versa when receiving a JavaScript `TypedArray` as a boxed slice in Rust.
|
||||
|
||||
### Example Rust Usage
|
||||
|
||||
```rust
|
||||
{{#include ../../../examples/guide-supported-types-examples/src/boxed_number_slices.rs}}
|
||||
```
|
||||
|
||||
### Example JavaScript Usage
|
||||
|
||||
```js
|
||||
{{#include ../../../examples/guide-supported-types-examples/boxed_number_slices.js}}
|
||||
```
|
||||
|
||||
## `[u8]` `[i8]` `[u16]` `[i16]` `[u32]` `[i32]` `[u64]` `[i64]` `[f32]` `[f64]`
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user