Add a first-class way of accessing caller's exports (#1290)
* Add a first-class way of accessing caller's exports This commit is a continuation of #1237 and updates the API of `Func` to allow defining host functions which have easy access to a caller's memory in particular. The new APIs look like so: * The `Func::wrap*` family of functions was condensed into one `Func::wrap` function. * The ABI layer of conversions in `WasmTy` were removed * An optional `Caller<'_>` argument can be at the front of all host-defined functions now. The old way the wasi bindings looked up memory has been removed and is now replaced with the `Caller` type. The `Caller` type has a `get_export` method on it which allows looking up a caller's export by name, allowing you to get access to the caller's memory easily, and even during instantiation. * Add a temporary note * Move some docs
This commit is contained in:
@@ -149,12 +149,12 @@ looks like this:
|
||||
# (import "" "double" (func $double (param i32) (result i32))))"#)?;
|
||||
// First we can create our `log` function, which will simply print out the
|
||||
// parameter it receives.
|
||||
let log = Func::wrap1(&store, |param: i32| {
|
||||
let log = Func::wrap(&store, |param: i32| {
|
||||
println!("log: {}", param);
|
||||
});
|
||||
|
||||
// Next we can create our double function which doubles the input it receives.
|
||||
let double = Func::wrap1(&store, |param: i32| param * 2);
|
||||
let double = Func::wrap(&store, |param: i32| param * 2);
|
||||
|
||||
// When instantiating the module we now need to provide the imports to the
|
||||
// instantiation process. This is the second slice argument, where each
|
||||
|
||||
Reference in New Issue
Block a user