logo

Function async_std::process::exit

1.0.0 · source · []
pub fn exit(code: i32) -> !
Expand description

Terminates the current process with the specified exit code.

This function will never return and will immediately terminate the current process. The exit code is passed through to the underlying OS and will be available for consumption by another process.

Note that because this function never returns, and that it terminates the process, no destructors on the current stack or any other thread’s stack will be run. 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.

Platform-specific behavior

Unix: On Unix-like platforms, it is unlikely that all 32 bits of exit will be visible to a parent process inspecting the exit code. On most Unix-like platforms, only the eight least-significant bits are considered.

Examples

Due to this function’s behavior regarding destructors, a conventional way to use the function is to extract the actual computation to another function and compute the exit code from its return value:

fn run_app() -> Result<(), ()> {
    // Application logic here
    Ok(())
}

fn main() {
    std::process::exit(match run_app() {
        Ok(_) => 0,
        Err(err) => {
            eprintln!("error: {err:?}");
            1
        }
    });
}

Due to platform-specific behavior, the exit code for this example will be 0 on Linux, but 256 on Windows:

use std::process;

process::exit(0x0100);