Explain difference between panic! and abort in abort docs

As per #29370
This commit is contained in:
Pirh 2017-09-27 22:47:21 +01:00
parent 6dfa45d2ed
commit 7ab20c850e

View File

@ -1124,7 +1124,14 @@ pub fn exit(code: i32) -> ! {
/// ///
/// Note that because this function never returns, and that it terminates the /// 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 /// 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 /// will be run.
///
/// This is in contrast to the default behaviour 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 equivalent.
///
/// 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 /// this function at a known point where there are no more destructors left
/// to run. /// to run.
/// ///
@ -1162,6 +1169,8 @@ pub fn exit(code: i32) -> ! {
/// // the destructor implemented for HasDrop will never get run /// // the destructor implemented for HasDrop will never get run
/// } /// }
/// ``` /// ```
///
/// [`panic!`]: ../../std/macro.panic.html
#[stable(feature = "process_abort", since = "1.17.0")] #[stable(feature = "process_abort", since = "1.17.0")]
pub fn abort() -> ! { pub fn abort() -> ! {
unsafe { ::sys::abort_internal() }; unsafe { ::sys::abort_internal() };