-
Notifications
You must be signed in to change notification settings - Fork 565
Description
#1194 (comment) suggests documenting how main()s return value affects the process's exit status.
I think the Reference doesn't currently have anything to say about what happens after main() returns.
I suggest adding a section in runtime.md saying roughly the following:
-
When (if)
main()returns, the runtime callsreport()on its result (which necessarily implementsTermination), which gives anExitCode. -
The runtime uses that
ExitCodein a platform-specific way to report information to the environment hosting the Rust program. -
Note: on Unix-like systems and Windows, the
ExitCodedetermines the process's exit status
Further, I think some part of Rust's documentation ought to be saying that, on Unix-like systems and Windows, ExitCode::SUCCESS leads to exit status 0, and ExitCode::FAILURE leads to exit status 1 (because we have to expect that users will rely on that behaviour). I think that part would be better in the standard library docs, but it isn't currently there.
I think it's important to say that report() is called, because that's what has the side-effect of printing a message to standard error (in the case where the returned value was a Result<_, Debug>).
So I think ideally the standard library docs would have entries for the specific Termination impls, saying how each of them behaves.
I think this approach would avoid the worry expressed in rust-lang/rust#93448: a no_std binary won't be using the Termination impls for Result<_, Debug>, because those are in std.