File tree Expand file tree Collapse file tree 2 files changed +7
-21
lines changed Expand file tree Collapse file tree 2 files changed +7
-21
lines changed Original file line number Diff line number Diff line change @@ -44,23 +44,14 @@ pub struct PanicInfo<'a> {
4444}
4545
4646impl < ' a > PanicInfo < ' a > {
47- #[ unstable( feature = "panic_internals" , issue = "none" ) ]
48- #[ doc( hidden) ]
4947 #[ inline]
50- pub fn internal_constructor (
48+ pub ( crate ) fn new (
5149 location : & ' a Location < ' a > ,
50+ payload : & ' a ( dyn Any + Send ) ,
5251 can_unwind : bool ,
5352 force_no_backtrace : bool ,
5453 ) -> Self {
55- struct NoPayload ;
56- PanicInfo { payload : & NoPayload , location, can_unwind, force_no_backtrace }
57- }
58-
59- #[ unstable( feature = "panic_internals" , issue = "none" ) ]
60- #[ doc( hidden) ]
61- #[ inline]
62- pub fn set_payload ( & mut self , info : & ' a ( dyn Any + Send ) ) {
63- self . payload = info;
54+ PanicInfo { payload, location, can_unwind, force_no_backtrace }
6455 }
6556
6657 /// Returns the payload associated with the panic.
Original file line number Diff line number Diff line change @@ -775,9 +775,7 @@ fn rust_panic_with_hook(
775775 crate :: sys:: abort_internal ( ) ;
776776 }
777777
778- let mut info = PanicInfo :: internal_constructor ( location, can_unwind, force_no_backtrace) ;
779- let hook = HOOK . read ( ) . unwrap_or_else ( PoisonError :: into_inner) ;
780- match * hook {
778+ match * HOOK . read ( ) . unwrap_or_else ( PoisonError :: into_inner) {
781779 // Some platforms (like wasm) know that printing to stderr won't ever actually
782780 // print anything, and if that's the case we can skip the default
783781 // hook. Since string formatting happens lazily when calling `payload`
@@ -786,15 +784,12 @@ fn rust_panic_with_hook(
786784 // formatting.)
787785 Hook :: Default if panic_output ( ) . is_none ( ) => { }
788786 Hook :: Default => {
789- info. set_payload ( payload. get ( ) ) ;
790- default_hook ( & info) ;
787+ default_hook ( & PanicInfo :: new ( location, payload. get ( ) , can_unwind, force_no_backtrace) ) ;
791788 }
792789 Hook :: Custom ( ref hook) => {
793- info. set_payload ( payload. get ( ) ) ;
794- hook ( & info) ;
790+ hook ( & PanicInfo :: new ( location, payload. get ( ) , can_unwind, force_no_backtrace) ) ;
795791 }
796- } ;
797- drop ( hook) ;
792+ }
798793
799794 // Indicate that we have finished executing the panic hook. After this point
800795 // it is fine if there is a panic while executing destructors, as long as it
You can’t perform that action at this time.
0 commit comments