Rust SDK
你可以通过 WasmEdge Rust SDK 将 WasmEdge 嵌入到 Rust 应用程序中。
WasmEdge Rust SDK 涉及两个 Rust crate wasmedge-sys 和 wasmedge-rs,它们根据不同的原则和不同的目的设计。 wasmedge-sys crate 定义了一组底层 Rust API,其仅仅是对 WasmEdge C API 进行封装,以提供相应的安全接口,而 wasmedge-rs crate 提供更优雅和符合人体工程学的 API,更适合应用程序开发。
- wasmedge-sys crate 定义了一组底层 Rust API,其仅仅是对 WasmEdge C API 进行封装,以提供相应的安全接口。 wasmedge-sys 更适合作为基础库,为面向应用的更高层 Rust 库提供服务。
- wasmedge-rs crate 基于 wasmedge-sys crate,并提供更优雅和惯用的 Rust API,更适合面向业务的设计和开发,wasmedge-rs crate 目前仍处于积极地开发过程中。
构建 wasmedge-sys
wasmedge-sys依赖于WasmEdge的核心库及必要的头文件。-
为了通过 cargo build 命令构建 wasmedge-sys 。
-
通过指定
WASMEDGE_INCLUDE_DIR和WASMEDGE_LIB_DIR -
假设在 WasmEdge Releases 下载
Wasmedge-0.9.1二进制包并放在~/workspace/me/目录中,发布包的目录结构如下所示:
``` 1. root@0a877562f39e:~/workspace/me/WasmEdge-0.9.1-Linux# pwd 2. /root/workspace/me/WasmEdge-0.9.1-Linux
- root@0a877562f39e:~/workspace/me/WasmEdge-0.9.1-Linux# tree .
- .
- |-- bin
- | |-- wasmedge
- | `-- wasmedgec
- |-- include
- | `-- wasmedge
- | |-- enum_configure.h
- | |-- enum_errcode.h
- | |-- enum_types.h
- | |-- int128.h
- | |-- version.h
- | `-- wasmedge.h
- `-- lib64
-
`-- libwasmedge_c.so
-
4 directories, 9 files ```
-
设置
WASMEDGE_INCLUDE_DIR和WASMEDGE_LIB_DIR环境变量以指定include和lib(或lib64)目录,进入wasmedge-sys目录和cargo buildcrate。``` 1. root@0a877562f39e:~/workspace/me/WasmEdge/bindings/rust/wasmedge-sys# export WASMEDGE_INCLUDE_DIR=/root/workspace/me/WasmEdge-0.9.1-Linux/include/wasmedge
- root@0a877562f39e:~/workspace/me/WasmEdge/bindings/rust/wasmedge-sys# export WASMEDGE_LIB_DIR=/root/workspace/me/WasmEdge-0.9.1-Linux/lib64 ```
- 通过指定
WASMEDGE_BUILD_DIR
-
假设在
~/workspace/me/WasmEdge中git cloneWasmEdge repo,并按照 instructions 构建 WasmEdge native library 生成include和lib目录应该在~/workspace/me/WasmEdge/build中。 -
设置
WASMEDGE_BUILD_DIR环境变量并指定build目录,进入wasmedge-sys目录和cargo buildcrate。1. root@0a877562f39e:~/workspace/me/WasmEdge# export WASMEDGE_BUILD_DIR=/root/workspace/me/WasmEdge/build- 通过standalone模式
上述提到的两种方法之外,standalone 模式可以在构建 crate 之前直接构建 WasmEdge 原生库。
-
假设
~/workspace/me/WasmEdge中有git cloneWasmEdge repo,在wasmedge-sys目录中按照以下说明进行操作:``` 1. // set WASMEDGE_DIR 2. root@0a877562f39e:~/workspace/me/WasmEdge/bindings/rust/wasmedge-sys# export WASMEDGE_DIR=/root/workspace/me/WasmEdge
- // cargo build with standalone feature
- root@0a877562f39e:~/workspace/me/WasmEdge/bindings/rust/wasmedge-sys# cargo build --features standalone ```
- 通过 WasmEdge docker image
如果选择通过 WasmEdge docker 镜像来构建容器进行开发,则预构建 WasmEdge 二进制包默认位于 $HOME/.wasmedge 目录中, wasmedge-sys 的构建脚本 ( build.rs )可以自动检测并构建 crate。
