File tree Expand file tree Collapse file tree 2 files changed +18
-10
lines changed
Expand file tree Collapse file tree 2 files changed +18
-10
lines changed Original file line number Diff line number Diff line change @@ -22,9 +22,13 @@ fn store(x: &'static Box<i32>) {
2222fn main ( ) {
2323 let data = Box :: new ( Box :: new ( 1i32 ) ) ;
2424 let fn_ptr: fn ( & ' static Box < i32 > ) = store;
25- downcast_trait :: < _ , dyn Trait > ( & fn_ptr)
26- . unwrap ( )
27- . call ( & * data) ;
28- drop ( data) ;
29- println ! ( "{}" , STORAGE . get( ) . unwrap( ) ) ;
25+ let dt = downcast_trait :: < _ , dyn Trait > ( & fn_ptr) ;
26+ if let Some ( dt) = dt {
27+ // unsound path
28+ dt. call ( & * data) ;
29+ drop ( data) ;
30+ println ! ( "{}" , STORAGE . get( ) . unwrap( ) ) ;
31+ } else {
32+ println ! ( "success" )
33+ }
3034}
Original file line number Diff line number Diff line change @@ -20,9 +20,13 @@ fn store(x: &'static Box<i32>) {
2020
2121fn main ( ) {
2222 let data = Box :: new ( Box :: new ( 1i32 ) ) ;
23- downcast_trait :: < _ , dyn Trait < fn ( & ' static Box < i32 > ) > > ( & ( ) )
24- . unwrap ( )
25- . call ( store, & * data) ;
26- drop ( data) ;
27- println ! ( "{}" , STORAGE . get( ) . unwrap( ) ) ;
23+ let dt = downcast_trait :: < _ , dyn Trait < fn ( & ' static Box < i32 > ) > > ( & ( ) ) ;
24+ if let Some ( dt) = dt {
25+ // unsound path
26+ dt. call ( store, & * data) ;
27+ drop ( data) ;
28+ println ! ( "{}" , STORAGE . get( ) . unwrap( ) ) ;
29+ } else {
30+ println ! ( "success" )
31+ }
2832}
You can’t perform that action at this time.
0 commit comments