1 个不稳定版本
0.1.0 | 2023年2月24日 |
---|
#898 in WebAssembly
26KB
626 行
Easegress Rust SDK
这是 Rust SDK,用于 Easegress。它可以用来扩展 Easegress 的功能。
先决条件
本地开发
- 克隆仓库。
git clone https://github.com/LokiWager/easegress-demo
- 在
src/lib.rs
中实现你的扩展。请查看examples
目录以获取更多示例。
use std::collections::HashMap;
use std::time::Duration;
use easegress_sdk::*;
use easegress_macros::easegress_object;
// define your own struct.
#[easegress_object]
struct AddRequestHeader;
// implement Program trait for your own struct.
#[easegress_object]
impl Program for AddRequestHeader {
fn new(_params: HashMap<String, String>) -> Self {
Self {}
}
fn run(&self) -> i32 {
let v = request::get_header("Foo".to_string());
if v.len() > 10 {
log(LogLevel::Warning, format!("The length of Foo is greater than 10"));
}
if v.len() > 0 {
request::add_header("Wasm-Added".to_string(), v.clone());
}
request::set_body("I have a new body now".as_bytes().to_vec());
0
}
}
注意
- 您需要在您自己的结构体上实现
Program
特性。 - 此外,必须将
#[easegress_object]
属性宏应用于您的结构体定义及其特性实现块。 - 仅允许有一个带有
#[easegress_object]
属性宏的结构体。
- 添加
wasm32-unknown-unknown
目标。
rustup target add wasm32-unknown-unknown
- 使用此命令构建
cargo build --target wasm32-unknown-unknown --release
如果成功,它将在 target/wasm32-unknown-unknown/release
文件夹中生成 easegress_demo.wasm
。
部署和执行
有关部署和执行编译后的 Wasm 代码的详细信息,请参阅 WasmHost 的文档。
依赖项
~89–265KB