Crate wasm_plugin_host[][src]

A low-ish level tool for easily hosting WASM based plugins.

The goal of wasm_plugin is to make communicating across the host-plugin boundary as simple and idiomatic as possible while being unopinionated about how you actually use the plugin.

Loading a plugin is as simple as reading the .wasm file off disk.

let mut plugin = WasmPlugin::load("path/to/plugin.wasm")?;

Calling functions exported by the plugin takes one of two forms. Either the function takes no arguments and returns a single serde deserializable value:

let response: ResultType = plugin.call_function("function_name")?;

Or it takes a single serializable argument and returns a single result:

let message = Message::default();
let response: ResultType = plugin.call_function_with_argument("function_name", &message)?;

If the inject_getrandom feature is selected then the host’s getrandom will be injected into the plugin which allows rand to be used in the plugin. inject_getrandom is selected by default.

Limitations

Currently serialization is done using bincode which limits plugins to being written in rust. This may change in the future.

There is no reflection so you must know up front which functions a plugin exports and their signatures.

Modules

errors

Structs

WasmPlugin

A loaded plugin