This crate is a utility to easily convert values between
A Handle<JsValue>
from the neon crate
and any value implementing serde::{Serialize, Deserialize}
neon-serde targets node >= 6.0
Uint8ClampedArray
only works on node >= 8
neon_serde::from_handle
Convert a Handle<js::JsValue>
to
a type implementing serde::Deserialize
neon_serde::to_value
˚Convert a value implementing serde::Serialize
to
a Handle<JsValue>
The export! macro allows you to quickly define functions automatically convert thier arguments
```rust,no_run
extern crate neon;
extern crate neon_serde;
extern crate serde_derive;
struct User { name: String, age: u16, }
export! { fn say_hello(name: String) -> String { format!("Hello, {}!", name) }
fn greet(user: User) -> String {
format!("{} is {} years old", user.name, user.age)
}
fn fibonacci(n: i32) -> i32 {
match n {
1 | 2 => 1,
n => fibonacci(n - 1) + fibonacci(n - 2)
}
}
}
```
```rust,norun extern crate neonserde; extern crate neon;
extern crate serde_derive;
use neon::prelude::*;
struct AnObject {
a: u32,
b: Vec
fn deserialize_something(mut cx: FunctionContext) -> JsResult
let arg0_value :AnObject = neon_serde::from_value(&mut cx, arg0)?;
println!("{:?}", arg0_value);
Ok(JsUndefined::new().upcast())
}
fn serialize_something(mut cx: FunctionContext) -> JsResult
let js_value = neon_serde::to_value(&mut cx, &value)?;
Ok(js_value)
} ```
All Deserialize Values must own all their data (they must have the trait serde::DererializeOwned
)