繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM