[英]How does rust simply get a return from a closure
这是我在 tauri 上遇到的问题。
'return' 向您显示了我需要的返回值,而且我知道以这种方式编写它根本不起作用。
'pick_file' 被异步调用,我知道消息传递似乎有效,但有没有更简单的方法来获取我需要的值。
#[tauri::command]
fn open_file() -> String {
dialog::FileDialogBuilder::default()
.add_filter("data", &["json"])
.pick_file(|path_buf| match path_buf {
Some(p) => return format!("{}", p.to_str().unwrap()),
_ => return "".into()
});
}
首先,闭包中的return
从闭包中返回,而不是从包含它的 function 中返回。
更根本的问题是,如果您使用FileDialogBuilder::pick_file()
,则无法从open_file()
返回String
。 根据文档, pick_file()
是非阻塞的,无需等待用户选择文件即可立即返回。 你可以在闭包中做的是将文件发送到一个通道,然后在其他地方获取它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.