rust 如何简单地从闭包中获得回报

How does rust simply get a return from a closure

提问人:ペンで空を描く 提问时间:8/29/2022 更新时间:8/29/2022 访问量:152

问:

这是我在金牛座上遇到的问题。

'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()
        });
}
异步 Rust 闭包生命周期 Tauri

评论


答:

2赞 user4815162342 8/29/2022 #1

首先,在闭包中从闭包返回,而不是从包含它的函数返回。return

更根本的问题是,如果你使用 .根据文档,是非阻塞的,无需等待用户选择文件即可立即返回。在闭包中,您可以做的是将文件发送到一个通道,然后在其他地方拾取它。Stringopen_file()FileDialogBuilder::pick_file()pick_file()