9
9
import option = std:: option:: t;
10
10
import std:: option:: some;
11
11
import std:: option:: none;
12
- import std:: str;
13
12
import std:: istr;
14
13
import std:: vec;
15
14
import std:: map;
@@ -20,40 +19,42 @@ import std::comm::send;
20
19
import std:: comm:: recv;
21
20
import std:: comm;
22
21
23
- fn map ( filename : str , emit : map_reduce:: putter ) { emit ( filename, "1" ) ; }
22
+ fn map ( filename : & istr , emit : map_reduce:: putter ) { emit ( filename, ~ "1 ") ; }
24
23
25
24
mod map_reduce {
26
25
export putter;
27
26
export mapper;
28
27
export map_reduce;
29
28
30
- type putter = fn ( str , str ) ;
29
+ type putter = fn ( & istr , & istr ) ;
31
30
32
- type mapper = fn ( str , putter ) ;
31
+ type mapper = fn ( & istr , putter ) ;
33
32
34
33
tag ctrl_proto { find_reducer( [ u8 ] , chan<int >) ; mapper_done; }
35
34
36
- fn start_mappers ( ctrl : chan < ctrl_proto > , inputs : & [ str ] ) {
37
- for i: str in inputs { task:: spawn ( bind map_task ( ctrl, i) ) ; }
35
+ fn start_mappers ( ctrl : chan < ctrl_proto > , inputs : & [ istr ] ) {
36
+ for i: istr in inputs {
37
+ task:: spawn ( bind map_task ( ctrl, i) ) ;
38
+ }
38
39
}
39
40
40
- fn map_task ( ctrl : chan < ctrl_proto > , input : str ) {
41
+ fn map_task ( ctrl : chan < ctrl_proto > , input : - istr ) {
41
42
42
43
let intermediates = map:: new_str_hash ( ) ;
43
44
44
45
fn emit ( im : & map:: hashmap < istr , int > , ctrl : chan < ctrl_proto > ,
45
- key : str , val : str ) {
46
+ key : & istr , val : & istr ) {
46
47
let c;
47
- alt im. find ( istr :: from_estr ( key) ) {
48
+ alt im. find ( key) {
48
49
some ( _c) { c = _c }
49
50
none. {
50
51
let p = port ( ) ;
51
52
log_err "sending find_reducer" ;
52
- send ( ctrl, find_reducer ( str :: bytes ( key) , chan ( p) ) ) ;
53
+ send ( ctrl, find_reducer ( istr :: bytes ( key) , chan ( p) ) ) ;
53
54
log_err "receiving" ;
54
55
c = recv ( p) ;
55
56
log_err c;
56
- im. insert ( istr :: from_estr ( key) , c) ;
57
+ im. insert ( key, c) ;
57
58
}
58
59
}
59
60
}
@@ -62,7 +63,7 @@ mod map_reduce {
62
63
send ( ctrl, mapper_done) ;
63
64
}
64
65
65
- fn map_reduce ( inputs : & [ str ] ) {
66
+ fn map_reduce ( inputs : & [ istr ] ) {
66
67
let ctrl = port ( ) ;
67
68
68
69
// This task becomes the master control task. It spawns others
@@ -93,5 +94,5 @@ mod map_reduce {
93
94
}
94
95
95
96
fn main ( ) {
96
- map_reduce:: map_reduce ( [ "../src/test/run-pass/hashmap-memory.rs" ] ) ;
97
+ map_reduce:: map_reduce ( [ ~ "../src/test/run-pass/hashmap-memory. rs "] ) ;
97
98
}
0 commit comments