@@ -141,7 +141,7 @@ impl Schedule {
141
141
. stage_order
142
142
. iter ( )
143
143
. enumerate ( )
144
- . find ( |( _i, stage_label) | & * * * stage_label == target)
144
+ . find ( |( _i, stage_label) | stage_label. dyn_clone ( ) == target. dyn_clone ( ) )
145
145
. map ( |( i, _) | i)
146
146
. unwrap_or_else ( || panic ! ( "Target stage does not exist: {:?}." , target) ) ;
147
147
@@ -175,7 +175,7 @@ impl Schedule {
175
175
. stage_order
176
176
. iter ( )
177
177
. enumerate ( )
178
- . find ( |( _i, stage_label) | & * * * stage_label == target)
178
+ . find ( |( _i, stage_label) | stage_label. dyn_clone ( ) == target. dyn_clone ( ) )
179
179
. map ( |( i, _) | i)
180
180
. unwrap_or_else ( || panic ! ( "Target stage does not exist: {:?}." , target) ) ;
181
181
@@ -371,3 +371,26 @@ impl Stage for Schedule {
371
371
}
372
372
}
373
373
}
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