ctrlc2 3.7.3

Easy Ctrl-C handler version 2 for Rust projects
Documentation
use std::sync::Arc;
use std::sync::atomic::{AtomicUsize, Ordering};

fn main() {
    let running = Arc::new(AtomicUsize::new(0));
    let handle = ctrlc2::set_handler(move || {
        let prev = running.fetch_add(1, Ordering::SeqCst);
        if prev == 0 {
            println!(" ");
            println!("Ctrl-C received, press Ctrl-C again to exit.");
            false
        } else {
            println!(" ");
            println!("Exiting...");
            true
        }
    })
    .expect("Error setting Ctrl-C handler");
    println!("Running...");
    handle.join().unwrap();
    println!("Exit complete.");
}