@@ -268,17 +268,17 @@ fn panic_propagate_still_execute_4() {
268268}
269269
270270macro_rules! test_order {
271- ( $scope: ident) => { {
271+ ( $scope: ident => $spawn : ident ) => { {
272272 let builder = ThreadPoolBuilder :: new( ) . num_threads( 1 ) ;
273273 let pool = builder. build( ) . unwrap( ) ;
274274 pool. install( || {
275275 let vec = Mutex :: new( vec![ ] ) ;
276276 $scope( |scope| {
277277 let vec = & vec;
278278 for i in 0 ..10 {
279- scope. spawn( move |scope| {
279+ scope. $ spawn( move |scope| {
280280 for j in 0 ..10 {
281- scope. spawn( move |_| {
281+ scope. $ spawn( move |_| {
282282 vec. lock( ) . unwrap( ) . push( i * 10 + j) ;
283283 } ) ;
284284 }
@@ -293,32 +293,33 @@ macro_rules! test_order {
293293#[ test]
294294fn lifo_order ( ) {
295295 // In the absense of stealing, `scope()` runs its `spawn()` jobs in LIFO order.
296- let vec = test_order ! ( scope) ;
296+ let vec = test_order ! ( scope => spawn ) ;
297297 let expected: Vec < i32 > = ( 0 ..100 ) . rev ( ) . collect ( ) ; // LIFO -> reversed
298298 assert_eq ! ( vec, expected) ;
299299}
300300
301301#[ test]
302302fn fifo_order ( ) {
303- // In the absense of stealing, `scope_fifo()` runs its `spawn ()` jobs in FIFO order.
304- let vec = test_order ! ( scope_fifo) ;
303+ // In the absense of stealing, `scope_fifo()` runs its `spawn_fifo ()` jobs in FIFO order.
304+ let vec = test_order ! ( scope_fifo => spawn_fifo ) ;
305305 let expected: Vec < i32 > = ( 0 ..100 ) . collect ( ) ; // FIFO -> natural order
306306 assert_eq ! ( vec, expected) ;
307307}
308308
309309macro_rules! test_nested_order {
310- ( $outer_scope: ident, $inner_scope: ident) => { {
310+ ( $outer_scope: ident => $outer_spawn: ident,
311+ $inner_scope: ident => $inner_spawn: ident) => { {
311312 let builder = ThreadPoolBuilder :: new( ) . num_threads( 1 ) ;
312313 let pool = builder. build( ) . unwrap( ) ;
313314 pool. install( || {
314315 let vec = Mutex :: new( vec![ ] ) ;
315316 $outer_scope( |scope| {
316317 let vec = & vec;
317318 for i in 0 ..10 {
318- scope. spawn ( move |_| {
319+ scope. $outer_spawn ( move |_| {
319320 $inner_scope( |scope| {
320321 for j in 0 ..10 {
321- scope. spawn ( move |_| {
322+ scope. $inner_spawn ( move |_| {
322323 vec. lock( ) . unwrap( ) . push( i * 10 + j) ;
323324 } ) ;
324325 }
@@ -334,23 +335,23 @@ macro_rules! test_nested_order {
334335#[ test]
335336fn nested_lifo_order ( ) {
336337 // In the absense of stealing, `scope()` runs its `spawn()` jobs in LIFO order.
337- let vec = test_nested_order ! ( scope, scope) ;
338+ let vec = test_nested_order ! ( scope => spawn , scope => spawn ) ;
338339 let expected: Vec < i32 > = ( 0 ..100 ) . rev ( ) . collect ( ) ; // LIFO -> reversed
339340 assert_eq ! ( vec, expected) ;
340341}
341342
342343#[ test]
343344fn nested_fifo_order ( ) {
344- // In the absense of stealing, `scope_fifo()` runs its `spawn ()` jobs in FIFO order.
345- let vec = test_nested_order ! ( scope_fifo, scope_fifo) ;
345+ // In the absense of stealing, `scope_fifo()` runs its `spawn_fifo ()` jobs in FIFO order.
346+ let vec = test_nested_order ! ( scope_fifo => spawn_fifo , scope_fifo => spawn_fifo ) ;
346347 let expected: Vec < i32 > = ( 0 ..100 ) . collect ( ) ; // FIFO -> natural order
347348 assert_eq ! ( vec, expected) ;
348349}
349350
350351#[ test]
351352fn nested_lifo_fifo_order ( ) {
352353 // LIFO on the outside, FIFO on the inside
353- let vec = test_nested_order ! ( scope, scope_fifo) ;
354+ let vec = test_nested_order ! ( scope => spawn , scope_fifo => spawn_fifo ) ;
354355 let expected: Vec < i32 > = ( 0 ..10 )
355356 . rev ( )
356357 . flat_map ( |i| ( 0 ..10 ) . map ( move |j| i * 10 + j) )
@@ -361,38 +362,39 @@ fn nested_lifo_fifo_order() {
361362#[ test]
362363fn nested_fifo_lifo_order ( ) {
363364 // FIFO on the outside, LIFO on the inside
364- let vec = test_nested_order ! ( scope_fifo, scope) ;
365+ let vec = test_nested_order ! ( scope_fifo => spawn_fifo , scope => spawn ) ;
365366 let expected: Vec < i32 > = ( 0 ..10 )
366367 . flat_map ( |i| ( 0 ..10 ) . rev ( ) . map ( move |j| i * 10 + j) )
367368 . collect ( ) ;
368369 assert_eq ! ( vec, expected) ;
369370}
370371
371372macro_rules! spawn_push {
372- ( $scope: ident, $vec: ident, $i: expr) => { {
373- $scope. spawn( move |_| $vec. lock( ) . unwrap( ) . push( $i) ) ;
373+ ( $scope: ident . $spawn : ident , $vec: ident, $i: expr) => { {
374+ $scope. $ spawn( move |_| $vec. lock( ) . unwrap( ) . push( $i) ) ;
374375 } } ;
375376}
376377
377378/// Test spawns pushing a series of numbers, interleaved
378379/// such that negative values are using an inner scope.
379380macro_rules! test_mixed_order {
380- ( $outer_scope: ident, $inner_scope: ident) => { {
381+ ( $outer_scope: ident => $outer_spawn: ident,
382+ $inner_scope: ident => $inner_spawn: ident) => { {
381383 let builder = ThreadPoolBuilder :: new( ) . num_threads( 1 ) ;
382384 let pool = builder. build( ) . unwrap( ) ;
383385 pool. install( || {
384386 let vec = Mutex :: new( vec![ ] ) ;
385387 $outer_scope( |outer_scope| {
386388 let vec = & vec;
387- spawn_push!( outer_scope, vec, 0 ) ;
389+ spawn_push!( outer_scope. $outer_spawn , vec, 0 ) ;
388390 $inner_scope( |inner_scope| {
389- spawn_push!( inner_scope, vec, -1 ) ;
390- spawn_push!( outer_scope, vec, 1 ) ;
391- spawn_push!( inner_scope, vec, -2 ) ;
392- spawn_push!( outer_scope, vec, 2 ) ;
393- spawn_push!( inner_scope, vec, -3 ) ;
391+ spawn_push!( inner_scope. $inner_spawn , vec, -1 ) ;
392+ spawn_push!( outer_scope. $outer_spawn , vec, 1 ) ;
393+ spawn_push!( inner_scope. $inner_spawn , vec, -2 ) ;
394+ spawn_push!( outer_scope. $outer_spawn , vec, 2 ) ;
395+ spawn_push!( inner_scope. $inner_spawn , vec, -3 ) ;
394396 } ) ;
395- spawn_push!( outer_scope, vec, 3 ) ;
397+ spawn_push!( outer_scope. $outer_spawn , vec, 3 ) ;
396398 } ) ;
397399 vec. into_inner( ) . unwrap( )
398400 } )
@@ -403,14 +405,14 @@ macro_rules! test_mixed_order {
403405fn mixed_lifo_order ( ) {
404406 // NB: the end of the inner scope makes us execute some of the outer scope
405407 // before they've all been spawned, so they're not perfectly LIFO.
406- let vec = test_mixed_order ! ( scope, scope) ;
408+ let vec = test_mixed_order ! ( scope => spawn , scope => spawn ) ;
407409 let expected = vec ! [ -3 , 2 , -2 , 1 , -1 , 3 , 0 ] ;
408410 assert_eq ! ( vec, expected) ;
409411}
410412
411413#[ test]
412414fn mixed_fifo_order ( ) {
413- let vec = test_mixed_order ! ( scope_fifo, scope_fifo) ;
415+ let vec = test_mixed_order ! ( scope_fifo => spawn_fifo , scope_fifo => spawn_fifo ) ;
414416 let expected = vec ! [ -1 , 0 , -2 , 1 , -3 , 2 , 3 ] ;
415417 assert_eq ! ( vec, expected) ;
416418}
@@ -419,14 +421,14 @@ fn mixed_fifo_order() {
419421fn mixed_lifo_fifo_order ( ) {
420422 // NB: the end of the inner scope makes us execute some of the outer scope
421423 // before they've all been spawned, so they're not perfectly LIFO.
422- let vec = test_mixed_order ! ( scope, scope_fifo) ;
424+ let vec = test_mixed_order ! ( scope => spawn , scope_fifo => spawn_fifo ) ;
423425 let expected = vec ! [ -1 , 2 , -2 , 1 , -3 , 3 , 0 ] ;
424426 assert_eq ! ( vec, expected) ;
425427}
426428
427429#[ test]
428430fn mixed_fifo_lifo_order ( ) {
429- let vec = test_mixed_order ! ( scope_fifo, scope) ;
431+ let vec = test_mixed_order ! ( scope_fifo => spawn_fifo , scope => spawn ) ;
430432 let expected = vec ! [ -3 , 0 , -2 , 1 , -1 , 2 , 3 ] ;
431433 assert_eq ! ( vec, expected) ;
432434}
0 commit comments