自从我最近开始研究以来,这里是 Rust 新手。我正在尝试让休息 api 工作,以下代码对我来说完全正常。
MyRest.rs
pub struct RestBro;
impl RestBro {
pub async fn run_bro() {
let routes_post = warp::post()
.and(warp::path!("v1" / "homie").and_then(my_function));
warp::serve(routes)
.run(([127, 0, 0, 1], 3003))
.await;
}
}
main.rs
#[tokio::main]
async fn main() {
let rb = RestBro;
rb.run_bro().await;
}
现在的问题是我不希望我的 main 成为一个async
并且我只是无法弄清楚如何run_bro()
像上面发生的那样无限期地运行该函数。我已经尝试过block_on
了,它只是阻塞并等待run_bro
中断这是预期的,当我尝试它时spawn
它只是运行并退出。Tokio 上的文档让我感到困惑,这就是我在这里寻求帮助的原因。
block_on
fn main() {
let async_block = async {
let rb = RestBro;
rb.run_bro().await;
};
let tr = tokio::runtime::Runtime::new().unwrap();
tr.block_on(async_block);
println!("Everything working good!");
}
产卵
fn main() {
let tr = tokio::runtime::Runtime::new().unwrap();
tr.spawn(async {
let rb = RestBro;
rb.run_bro().await;
});
println!("Everything working good!");
}
需要明确的是,我的问题是如何调用异步run_bro()
函数并从同步主函数中等待?提前致谢!!