@@ -38,7 +38,7 @@ fn create_queue<T: send>() -> queue<T> {
38
38
let p = port ( ) ;
39
39
let c = chan ( p) ;
40
40
41
- impl < T : send > of queue < T > for repr < T > {
41
+ impl < T : copy send> of queue < T > for repr < T > {
42
42
fn add_back ( x : T ) {
43
43
let x = x;
44
44
send ( self . c , x) ;
@@ -524,7 +524,8 @@ const min_granularity : uint = 1024u;
524
524
525
525
This is used to build most of the other parallel vector functions,
526
526
like map or alli." ]
527
- fn map_slices < A : send , B : send > ( xs : [ A ] , f : fn ~( uint , [ const A ] /& ) -> B )
527
+ fn map_slices < A : copy send, B : copy send> ( xs : [ A ] ,
528
+ f : fn ~( uint , [ const A ] /& ) -> B )
528
529
-> [ B ] {
529
530
530
531
let len = xs. len ( ) ;
@@ -577,14 +578,14 @@ fn map_slices<A: send, B: send>(xs: [A], f: fn~(uint, [const A]/&) -> B)
577
578
}
578
579
579
580
#[ doc="A parallel version of map." ]
580
- fn map < A : send , B : send > ( xs : [ A ] , f : fn ~( A ) -> B ) -> [ B ] {
581
+ fn map < A : copy send, B : copy send> ( xs : [ A ] , f : fn ~( A ) -> B ) -> [ B ] {
581
582
vec:: concat ( map_slices ( xs) { |_base, slice|
582
583
vec:: map ( slice, f)
583
584
} )
584
585
}
585
586
586
587
#[ doc="A parallel version of mapi." ]
587
- fn mapi < A : send , B : send > ( xs : [ A ] , f : fn ~( uint , A ) -> B ) -> [ B ] {
588
+ fn mapi < A : copy send, B : copy send> ( xs : [ A ] , f : fn ~( uint , A ) -> B ) -> [ B ] {
588
589
let slices = map_slices ( xs) { |base, slice|
589
590
vec:: mapi ( slice) { |i, x|
590
591
f ( i + base, x)
@@ -597,7 +598,7 @@ fn mapi<A: send, B: send>(xs: [A], f: fn~(uint, A) -> B) -> [B] {
597
598
}
598
599
599
600
#[ doc="Returns true if the function holds for all elements in the vector." ]
600
- fn alli < A : send > ( xs : [ A ] , f : fn ~( uint , A ) -> bool ) -> bool {
601
+ fn alli < A : copy send> ( xs : [ A ] , f : fn ~( uint , A ) -> bool ) -> bool {
601
602
vec:: all ( map_slices ( xs) { |base, slice|
602
603
vec:: alli ( slice) { |i, x|
603
604
f ( i + base, x)
@@ -606,7 +607,7 @@ fn alli<A: send>(xs: [A], f: fn~(uint, A) -> bool) -> bool {
606
607
}
607
608
608
609
#[ doc="Returns true if the function holds for any elements in the vector." ]
609
- fn any < A : send > ( xs : [ A ] , f : fn ~( A ) -> bool ) -> bool {
610
+ fn any < A : copy send> ( xs : [ A ] , f : fn ~( A ) -> bool ) -> bool {
610
611
vec:: any ( map_slices ( xs) { |_base, slice|
611
612
vec:: any ( slice, f)
612
613
} ) { |x| x }
0 commit comments