异步运行时
2025/1/12小于 1 分钟hyperlanewebrustusage-introductionasync
提示
由于 hyperlane 框架使用 tokio 作为异步运行时
原生写法
#[tokio::main]
async fn main() {
let mut server: Server = Server::default();
let server_control_hook: ServerControlHook = server.run().await.unwrap_or_default();
server_control_hook.wait().await;
}属性宏写法
use hyperlane::*;
use hyperlane_macros::*;
#[hyperlane(server: Server)]
#[hyperlane(server_config: ServerConfig)]
#[tokio::main]
async fn main() {
server.server_config(server_config);
let server_control_hook: ServerControlHook = server.run().await.unwrap_or_default();
server_control_hook.wait().await;
}提示
如果需要在异步中使用 Context 请使用 Context 中的 clone 方法,原因是框架内 Context 分配在堆上,请求完成后会回收堆上内存,不保证线程安全(例如并发更新 Context 上的数据),如果需要安全操作请使用上述方法。