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