Maintenance

The Wasmflow Codec crate contains the serialization and deserialization functions and structures for communicating in and out of Wasmflow Components.

JSON

Serializes to a serde_json::Value which can be printed as a JSON string.

json::serialize

```rust use wasmflow_codec::{json, Error}; use serde::{Serialize, Deserialize};

pub fn main() -> Result<(), Error> {

#[derive(Serialize, Deserialize)] struct Point { x: i32, y: i32, }

let point = Point { x: 200, y: 193 };

let value = json::serialize(&point)?; println!("{:?}", value);

assert_eq!(value, r#"{"x":200,"y":193}"#); Ok(()) } ```

json::deserialize

```rust use wasmflow_codec::{json, Error}; use serde::{Serialize, Deserialize};

pub fn main() -> Result<(), Error> { #[derive(Serialize, Deserialize, Debug, PartialEq)] struct Point { x: i32, y: i32, }

let json = r#"{"x":200,"y":193}"#;

let instance: Point = json::deserialize(&json)?;

assert_eq!(instance, Point { x: 200, y: 193 }); Ok(()) }

```

MessagePack

Serializes to a MessagePack [Vec].

messagepack::serialize

```rust use wasmflow_codec::{messagepack, Error}; use serde::{Serialize, Deserialize};

pub fn main() -> Result<(), Error> { #[derive(Serialize, Deserialize)] struct Point { x: i32, y: i32, }

let point = Point { x: 200, y: 193 };

let value = messagepack::serialize(&point)?; println!("{:?}", value);

let expected: Vec = vec![130, 161, 120, 204, 200, 161, 121, 204, 193]; assert_eq!(value, expected); Ok(()) } ```

messagepack::deserialize

```rust use wasmflow_codec::{messagepack, Error}; use serde::{Serialize, Deserialize};

pub fn main() -> Result<(), Error> { #[derive(Serialize, Deserialize, Debug, PartialEq)] struct Point { x: i32, y: i32, }

let slice = vec![146, 204, 200, 204, 193];

let instance: Point = messagepack::deserialize(&slice)?;

assert_eq!(instance, Point { x: 200, y: 193 }); Ok(()) } ```

Raw

The [raw] module uses [serde_value] as an intermediary format to pass around.

```rust use wasmflow_codec::{raw, Error}; use serde::{Serialize, Deserialize};

pub fn main() -> Result<(), Error> { #[derive(Serialize, Deserialize, Debug, PartialEq)] struct Point { x: i32, y: i32, }

let point = Point { x: 200, y: 193 };

let value = raw::serialize(&point)?; let instance: Point = raw::deserialize(value)?;

assert_eq!(instance, Point { x: 200, y: 193 }); Ok(()) } ```