我有一个用 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 部分吗?会安全吗?
我没有
iced
的经验,但自 Rust 1.61 以来,您可以从 main
返回任何实现 Termination 特征的类型。所以你可以为iced::Result
创建一些包装器(新型模式)并为它实现Termination
。然后根据您的实现,您可以使用自定义退出代码退出。