Function 如何重新执行主功能?
我希望尝试从应用程序本身内部重新运行我的应用程序 当程序最初运行时,它将Function 如何重新执行主功能?,function,syntax,rust,Function,Syntax,Rust,我希望尝试从应用程序本身内部重新运行我的应用程序 当程序最初运行时,它将尝试文件。如果文件不存在,则执行登录模块并创建文件;如果它确实存在,它将直接进入主应用程序模块 此try函数位于初始fn main()函数的内部 如何重新执行应用程序的main函数来重新评估文件是否存在 (是否存在类似于self::main()的东西?) 谢谢 main只是一个函数。像调用任何其他函数一样调用它: use std::sync::atomic::{AtomicUsize, Ordering}; static
尝试文件。如果文件不存在,则执行登录
模块并创建文件;如果它确实存在,它将直接进入主应用程序
模块
此try
函数位于初始fn main()
函数的内部
如何重新执行应用程序的main
函数来重新评估文件是否存在
(是否存在类似于self::main()
的东西?)
谢谢 main
只是一个函数。像调用任何其他函数一样调用它:
use std::sync::atomic::{AtomicUsize, Ordering};
static NUMBER_OF_RUNS: AtomicUsize = AtomicUsize::new(3);
fn main() {
if 0 == NUMBER_OF_RUNS.fetch_sub(1, Ordering::SeqCst) {
eprintln!("Ending");
} else {
eprintln!("Not done yet");
main();
}
}
尚未完成
还没做完
还没做完
结尾
现在,我建议你不要这样做。基本上就是很奇怪。相反,使用循环。我甚至不知道哪里需要循环,只需要基本的条件逻辑:
use std::{fs::File, io};
fn main() {
let file = File::open("my_file")
.or_else(|_| login())
.expect("Unable to open file");
println!("main logic");
}
fn login() -> io::Result<File> {
File::create("my_file")
}
使用std:{fs::File,io};
fn main(){
让文件=文件::打开(“我的文件”)
。或| | | login())
.expect(“无法打开文件”);
println!(“主逻辑”);
}
fn login()->io::Result{
文件::创建(“我的文件”)
}
为什么不创建一个单独的函数,然后运行两次呢?在我看来,两次运行main
似乎很糟糕。