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