@@ -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
@@ -369,3 +369,26 @@ impl Stage for Schedule {
369
369
}
370
370
}
371
371
}
372
+
373
+ #[ cfg( test) ]
374
+ mod tests {
375
+ use super :: * ;
376
+
377
+ #[ test]
378
+ fn test_adding_after_boxed_stage ( ) {
379
+ let mut schedule = Schedule :: default ( ) ;
380
+ schedule. add_stage ( "first" , SystemStage :: single_threaded ( ) ) ;
381
+ let stage = schedule. iter_stages ( ) . next ( ) . unwrap ( ) . 0 . dyn_clone ( ) ;
382
+ // shouldn't panic
383
+ schedule. add_stage_after ( stage, "second" , SystemStage :: single_threaded ( ) ) ;
384
+ }
385
+
386
+ #[ test]
387
+ fn test_adding_before_boxed_stage ( ) {
388
+ let mut schedule = Schedule :: default ( ) ;
389
+ schedule. add_stage ( "first" , SystemStage :: single_threaded ( ) ) ;
390
+ let stage = schedule. iter_stages ( ) . next ( ) . unwrap ( ) . 0 . dyn_clone ( ) ;
391
+ // shouldn't panic
392
+ schedule. add_stage_before ( stage, "second" , SystemStage :: single_threaded ( ) ) ;
393
+ }
394
+ }
0 commit comments