@@ -138,7 +138,7 @@ impl Schedule {
138138 . stage_order
139139 . iter ( )
140140 . enumerate ( )
141- . find ( |( _i, stage_label) | & * * * stage_label == target)
141+ . find ( |( _i, stage_label) | stage_label. dyn_clone ( ) == target. dyn_clone ( ) )
142142 . map ( |( i, _) | i)
143143 . unwrap_or_else ( || panic ! ( "Target stage does not exist: {:?}." , target) ) ;
144144
@@ -174,7 +174,7 @@ impl Schedule {
174174 . stage_order
175175 . iter ( )
176176 . enumerate ( )
177- . find ( |( _i, stage_label) | & * * * stage_label == target)
177+ . find ( |( _i, stage_label) | stage_label. dyn_clone ( ) == target. dyn_clone ( ) )
178178 . map ( |( i, _) | i)
179179 . unwrap_or_else ( || panic ! ( "Target stage does not exist: {:?}." , target) ) ;
180180
@@ -372,3 +372,26 @@ impl Stage for Schedule {
372372 }
373373 }
374374}
375+
376+ #[ cfg( test) ]
377+ mod tests {
378+ use super :: * ;
379+
380+ #[ test]
381+ fn test_adding_after_boxed_stage ( ) {
382+ let mut schedule = Schedule :: default ( ) ;
383+ schedule. add_stage ( "first" , SystemStage :: single_threaded ( ) ) ;
384+ let stage = schedule. iter_stages ( ) . next ( ) . unwrap ( ) . 0 . dyn_clone ( ) ;
385+ // shouldn't panic
386+ schedule. add_stage_after ( stage, "second" , SystemStage :: single_threaded ( ) ) ;
387+ }
388+
389+ #[ test]
390+ fn test_adding_before_boxed_stage ( ) {
391+ let mut schedule = Schedule :: default ( ) ;
392+ schedule. add_stage ( "first" , SystemStage :: single_threaded ( ) ) ;
393+ let stage = schedule. iter_stages ( ) . next ( ) . unwrap ( ) . 0 . dyn_clone ( ) ;
394+ // shouldn't panic
395+ schedule. add_stage_before ( stage, "second" , SystemStage :: single_threaded ( ) ) ;
396+ }
397+ }
0 commit comments