mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-15 04:23:12 +03:00
Add note to the guide about serde-wasm-bindgen
This commit is contained in:
parent
5233139b31
commit
90f1866ddd
@ -1,8 +1,8 @@
|
||||
# Serializing and Deserializing Arbitrary Data Into and From `JsValue` with Serde
|
||||
|
||||
It's possible to pass arbirtrary data from Rust to JavaScript by serializing it
|
||||
with [Serde](https://github.com/serde-rs/serde). `wasm-bindgen` includes the
|
||||
`JsValue` type, which streamlines serializing and deserializing.
|
||||
to JSON with [Serde](https://github.com/serde-rs/serde). `wasm-bindgen` includes
|
||||
the `JsValue` type, which streamlines serializing and deserializing.
|
||||
|
||||
## Enable the `"serde-serialize"` Feature
|
||||
|
||||
@ -105,3 +105,23 @@ example.field2.push([5,6]);
|
||||
// Send the example object back to wasm.
|
||||
receive_example_from_js(example);
|
||||
```
|
||||
|
||||
## An Alternative Approach: `serde-wasm-bindgen`
|
||||
|
||||
[The `serde-wasm-bindgen`
|
||||
crate](https://github.com/cloudflare/serde-wasm-bindgen) serializes and
|
||||
deserializes Rust structures directly to `JsValue`s, without going through
|
||||
temporary JSON stringification. This approach has both advantages and
|
||||
disadvantages.
|
||||
|
||||
The primary advantage is smaller code size: going through JSON entrenches code
|
||||
to stringify and parse floating point numbers, which is not a small amount of
|
||||
code.
|
||||
|
||||
There are two primary disadvantages. The first is that it is not always
|
||||
compatible with the default JSON-based serialization. The second is that it
|
||||
performs more calls back and forth between JS and Wasm, which has not been fully
|
||||
optimized in all engines, meaning it can sometimes be a speed
|
||||
regression. However, in other cases, it is a speed up over the JSON-based
|
||||
stringification, so — as always — make sure to profile your own use
|
||||
cases as necessary.
|
||||
|
Loading…
Reference in New Issue
Block a user