rust 从Iced应用程序返回自定义退出代码

ezykj2lf  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(188)

我有一个用iced编写的UI应用程序,它执行各种操作。要启动UI,我使用run()方法:UpdateDriver::run(Settings::default()),目前这返回类型为iced::Result的退出代码,结果类型为pub type Result = Result<(), Error>;,但我希望应用程序根据执行的操作返回类型为u8的自定义退出代码。

  • 例如:0(成功)、1(失败)、3(重新启动)等。*

我需要你的帮助。

当前工作流:

fn launch_ui_mode() -> iced::Result {
    UpdateDriver::run(Settings::default())
}

期望:

fn launch_ui_mode() -> u8 {
    UpdateDriver::run(Settings::default())
}

主要功能:

fn main() -> ExitCode {

    let retcode: u8;
    let exec_type = get_execution_mode();

    if exec_mode == UI{ 
        retcode = launch_ui_mode(); //This is iced::result type, I need u8 type
    }
    else{
        retcode = launch_cli_mode();
    }

    return ExitCode::from(retcode);
}

我的应用程序在CLI和UI模式下运行,对于CLI模式,我直接返回u8类型的退出代码,需要在UI模式下实现它。
那么,如果这样的事情是不可能的,从UI返回退出代码的另一种方法是什么?我是否应该在代码的UI部分添加全局变量来存储退出代码?安全吗?

n53p2ov0

n53p2ov01#

我没有iced的经验,但是从Rust 1.61开始,你可以从main返回任何实现Termination trait的类型。因此,您可以为iced::Result创建一些 Package 器(新类型模式)并为其实现Termination。然后,根据您的实现,您可以使用自定义退出代码退出。

相关问题