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.
Plugins should be written using wasm_plugin_guest
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 |