Crates.io | wapc-codec |
lib.rs | wapc-codec |
version | 1.1.0 |
source | src |
created_at | 2022-01-21 23:39:25.084535 |
updated_at | 2023-03-23 14:33:48.033343 |
description | A standard implementation of MessagePack serialization and deserialization for waPC communication |
homepage | https://wapc.io |
repository | |
max_upload_size | |
id | 518801 |
size | 23,885 |
This crates contains common serialization and deserialization methods for communicating in and out of waPC modules.
waPC does not require MessagePack but it does require a communication contract between hosts and guests. The waPC CLI code generator uses this crate but you are free to use what you want.
The following is a simple example of synchronous, bi-directional procedure calls between a WebAssembly host runtime and the guest module.
use serde::{Deserialize, Serialize};
use wapc_codec::messagepack::{deserialize, serialize};
#[derive(Deserialize, Serialize, Debug)]
struct Person {
first_name: String,
last_name: String,
age: u8,
}
pub fn main() -> Result<(), Box<dyn std::error::Error>> {
let person = Person {
first_name: "Samuel".to_owned(),
last_name: "Clemens".to_owned(),
age: 49,
};
println!("Original : {:?}", person);
let bytes = serialize(&person)?;
println!("Serialized messagepack bytes: {:?}", bytes);
let round_trip: Person = deserialize(&bytes)?;
println!("Deserialized : {:?}", round_trip);
Ok(())
}