Skip to content

Commit

Permalink
Rollup merge of #83254 - jfrimmel:panic_output-stream, r=m-ou-se,josh…
Browse files Browse the repository at this point in the history
…triplett

Include output stream in `panic!()` documentation

Fixes #83252.
  • Loading branch information
Dylan-DPC authored Mar 19, 2021
2 parents 1a0e32f + 19bd066 commit 2cc5d72
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions library/core/src/macros/panic.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,15 @@ tests. `panic!` is closely tied with the `unwrap` method of both
[`Option`][ounwrap] and [`Result`][runwrap] enums. Both implementations call
`panic!` when they are set to [`None`] or [`Err`] variants.

This macro is used to inject panic into a Rust thread, causing the thread to
panic entirely. This macro panics with a string and uses the [`format!`] syntax
for building the message.

Each thread's panic can be reaped as the [`Box`]`<`[`Any`]`>` type,
When using `panic!()` you can specify a string payload, that is built using
the [`format!`] syntax. That payload is used when injecting the panic into
the calling Rust thread, causing the thread to panic entirely.

The behavior of the default `std` hook, i.e. the code that runs directly
after the panic is invoked, is to print the message payload to
`stderr` along with the file/line/column information of the `panic!()`
call. You can override the panic hook using [`std::panic::set_hook()`].
Inside the hook a panic can be accessed as a `&dyn Any + Send`,
which contains either a `&str` or `String` for regular `panic!()` invocations.
To panic with a value of another other type, [`panic_any`] can be used.

Expand All @@ -26,6 +30,7 @@ See also the macro [`compile_error!`], for raising errors during compilation.

[ounwrap]: Option::unwrap
[runwrap]: Result::unwrap
[`std::panic::set_hook()`]: ../std/panic/fn.set_hook.html
[`panic_any`]: ../std/panic/fn.panic_any.html
[`Box`]: ../std/boxed/struct.Box.html
[`Any`]: crate::any::Any
Expand Down

0 comments on commit 2cc5d72

Please sign in to comment.