#wapc #wasi #sdk #api-bindings

wapc-codec

waPC通信的消息Pack序列化和反序列化的标准实现

3 个版本 (稳定)

1.1.0 2023年3月23日
1.0.0 2022年2月10日
1.0.0-alpha.02022年1月21日

WebAssembly 中排名第1080

Download history 31/week @ 2024-03-15 30/week @ 2024-03-22 71/week @ 2024-03-29 23/week @ 2024-04-05 25/week @ 2024-04-12 87/week @ 2024-04-19 82/week @ 2024-04-26 70/week @ 2024-05-03 49/week @ 2024-05-10 31/week @ 2024-05-17 30/week @ 2024-05-24 28/week @ 2024-05-31 36/week @ 2024-06-07 77/week @ 2024-06-14 110/week @ 2024-06-21 32/week @ 2024-06-28

每月下载量 256
wapc-guest 中使用

Apache-2.0

10KB
149

waPC消息Pack编解码器

crates.io license

这个crate包含了waPC模块内部和外部通信的常用序列化和反序列化方法。

waPC不需要MessagePack 但它确实需要一个主机和客户端之间的通信契约。waPC CLI代码生成器使用这个crate,但你也可以自由选择你想要的。

示例

以下是一个简单的示例,演示了WebAssembly主机运行时和客户端模块之间的同步、双向过程调用。

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(())
}

依赖项

~110–430KB