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

问题描述 投票:0回答:1

我有一个用 iced 编写的 UI 应用程序,它执行各种操作。要启动 UI,我使用 run() 方法:

UpdateDriver::run(Settings::default())
,目前它返回
iced::Result
类型的退出代码,但我希望应用程序根据执行的操作返回
u8
类型的自定义退出代码。

Ex: 0(success), 1(failure), 3(reboot) etc.

我需要关于如何做到这一点的帮助。

当前工作流程:

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 部分吗?会安全吗?

rust rust-iced
1个回答
0
投票

我没有

iced
的经验,但自 Rust 1.61 以来,您可以从
main
返回任何实现 Termination 特征的类型。所以你可以为
iced::Result
创建一些包装器(新型模式)并为它实现
Termination
。然后根据您的实现,您可以使用自定义退出代码退出。

© www.soinside.com 2019 - 2024. All rights reserved.