in src/main.rs [199:231]
fn main() -> Result<(), ()> {
// NOTE: Limit the maximum number of blocking threads to 128, rather than
// the default of 512.
// This may limit concurrency in some cases, but cargo-vet isn't running a
// server, and should avoid consuming all available resources.
let runtime = tokio::runtime::Builder::new_multi_thread()
.worker_threads(1)
.max_blocking_threads(128)
.enable_all()
.build()
.unwrap();
let _guard = runtime.enter();
// Wrap main up in a catch_panic so that we can use it to implement std::process::exit with
// unwinding, allowing us to silently exit the program while still cleaning up.
let panic_result = std::panic::catch_unwind(real_main);
let main_result = match panic_result {
Ok(main_result) => main_result,
Err(e) => {
if let Some(ExitPanic(code)) = e.downcast_ref::<ExitPanic>() {
// Exit panic, just silently exit with this status
std::process::exit(*code);
} else {
// Normal panic, let it ride
std::panic::resume_unwind(e);
}
}
};
main_result.map_err(|e| {
report_error(&e);
std::process::exit(-1);
})
}