我有一个用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部分添加全局变量来存储退出代码?安全吗?
1条答案
按热度按时间n53p2ov01#
我没有
iced
的经验,但是从Rust 1.61开始,你可以从main
返回任何实现Termination trait的类型。因此,您可以为iced::Result
创建一些 Package 器(新类型模式)并为其实现Termination
。然后,根据您的实现,您可以使用自定义退出代码退出。