mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-26 19:45:54 +03:00
0566a97485
This commit adds support for mutable slices to pass the boundary between JS and Rust. While mutable slices cannot be used as return values they can be listed as arguments to both exported functions as well as imported functions. When passing a mutable slice into a Rust function (aka having it as an argument to an exported Rust function) then like before with a normal slice it's copied into the wasm memory. Afterwards, however, the updates in the wasm memory will be reflected back into the original slice. This does require a lot of copying and probably isn't the most efficient, but it should at least work for the time being. The real nifty part happens when Rust passes a mutable slice out to JS. When doing this it's a very cheap operation that just gets a subarray of the main wasm memory. Now the wasm memory's buffer can change over time which can produce surprising results where memory is modified in JS but it may not be reflected back into Rust. To accomodate this when a JS imported function returns any updates to the buffer are copied back to Rust if Rust's memory buffer has changed in the meantime. Along the way this fixes usage of `slice` to instead use `subarray` as that's what we really want, no copying. All methods have been updated to use `subarray` accessors instead of `slice` or constructing new arrays. Closes #53 |
||
---|---|---|
.. | ||
all |