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();
}
}
Not done yet
Not done yet
Not done yet
Ending
Теперь я бы предложил, чтобы вы не делали этого .Это просто странно .Вместо этого используйте цикл.Я даже не вижу, где вам нужен цикл, все, что вам нужно, это базовая условная логика:
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")
}