为了在Tauri协议处理程序中调用一个Rocc函数,我成功地使用了futures::executor::block_on
,如下面的SO答案所述.链接:https://stackoverflow.com/a/66280983/4802953
但是答案不鼓励使用这种技术,所以我不确定这是否是从Tauri协议处理程序中调用一个Rocc函数的推荐方法.
我的代码的简化版本如下:
#[tokio::main]
async fn main() {
tauri::Builder::default()
.register_uri_scheme_protocol("myprot", move |_app, req| {
let handle = tokio::runtime::Handle::current();
let _guard = handle.enter();
futures::executor::block_on(async move { handle_protocol_myprot(&req).await })
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
如果你可以使用Tauri 2.0(目前是beta版),有一个新的方法register_asynchronous_uri_scheme_protocol可以让你在里面调用cnc.