waPC Guest SDK

crates.io license

The wapc-guest library is an implementation of the guest-side of the waPC WebAssembly protocol. wapc-guest gives Rust developers the pieces necessary to easily compile WebAssembly modules that you can load in waPC hosts. Each guest module registers function handlers with [register_function()]. Each handler should return a [CallResult] (a Result<Vec<u8>,Box<dyn Error + Sync + Send>>) with the function's return value.

It's typically used by code generated by the wapc CLI.

Example

```rust use wapc_guest as wapc;

[no_mangle]

pub fn wapcinit() { wapc::registerfunction("ping", ping); }

fn ping(msg: &[u8]) -> wapc::CallResult { wapc::consolelog(&format!( "INWASM: Received request for ping operation with payload : {}", std::str::fromutf8(msg).unwrap() )); let _res = wapc::hostcall("binding", "sample:namespace", "pong", msg)?; Ok(msg.to_vec()) } ```

Building

This crate is meant for projects targeting wasm32-unknown-unknown or wasm32-wasi.