Function abort

fn abort() -> never

Terminates the process in an abnormal fashion.

The function will never return and will immediately terminate the current process in a platform specific "abnormal" manner. As a consequence, no destructors on the current stack or any other thread's stack will be run, Rust IO buffers (eg, from BufWriter) will not be flushed, and C stdio buffers will (on most platforms) not be flushed.

This is in contrast to the default behavior of [panic!] which unwinds the current thread's stack and calls all destructors. When panic="abort" is set, either as an argument to rustc or in a crate's Cargo.toml, [panic!] and abort are similar. However, [panic!] will still call the panic hook while abort will not.

If a clean shutdown is needed it is recommended to only call this function at a known point where there are no more destructors left to run.

The process's termination will be similar to that from the C abort() function. On Unix, the process will terminate with signal SIGABRT, which typically means that the shell prints "Aborted".

Examples

use std::process;

fn main() {
    println!("aborting");

    process::abort();

    // execution never gets here
}

The abort function terminates the process, so the destructor will not get run on the example below:

use std::process;

struct HasDrop;

impl Drop for HasDrop {
    fn drop(&mut self) {
        println!("This will never be printed!");
    }
}

fn main() {
    let _x = HasDrop;
    process::abort();
    // the destructor implemented for HasDrop will never get run
}