@@ -19,15 +19,15 @@ native "rust" mod rustrt {
19
19
count: uint) ;
20
20
}
21
21
22
- fn from_vec[ T ] ( v: & vec[ T ] ) -> T [ ] {
22
+ fn from_vec [ @ T ] ( v : & vec[ T ] ) -> T [ ] {
23
23
let iv: T [ ] = ~[ ] ;
24
24
for e in v {
25
25
iv += ~[ e] ;
26
26
}
27
27
ret iv;
28
28
}
29
29
30
- fn to_vec[ T ] ( iv: & T [ ] ) -> vec[ T ] {
30
+ fn to_vec [ @ T ] ( iv : & T [ ] ) -> vec[ T ] {
31
31
let v: vec[ T ] = [ ] ;
32
32
for e in iv {
33
33
v += [ e] ;
@@ -36,7 +36,7 @@ fn to_vec[T](iv: &T[]) -> vec[T] {
36
36
}
37
37
38
38
/// Reserves space for `n` elements in the given vector.
39
- fn reserve[ T ] ( v: & mutable T [ mutable? ] , n: uint) {
39
+ fn reserve [ @ T ] ( v : & mutable T [ mutable ? ] , n : uint ) {
40
40
rustrt:: ivec_reserve_shared ( v, n) ;
41
41
}
42
42
@@ -48,7 +48,7 @@ fn len[T](v: &T[mutable? ]) -> uint { ret rusti::ivec_len(v); }
48
48
49
49
type init_op[ T ] = fn ( uint) -> T ;
50
50
51
- fn init_fn[ T ] ( op: & init_op[ T ] , n_elts: uint) -> T [ ] {
51
+ fn init_fn [ @ T ] ( op : & init_op[ T ] , n_elts : uint ) -> T [ ] {
52
52
let v = ~[ ] ;
53
53
reserve ( v, n_elts) ;
54
54
let i: uint = 0 u;
@@ -57,15 +57,15 @@ fn init_fn[T](op: &init_op[T], n_elts: uint) -> T[] {
57
57
}
58
58
59
59
// TODO: Remove me once we have slots.
60
- fn init_fn_mut[ T ] ( op: & init_op[ T ] , n_elts: uint) -> T [ mutable ] {
60
+ fn init_fn_mut [ @ T ] ( op : & init_op[ T ] , n_elts : uint ) -> T [ mutable ] {
61
61
let v = ~[ mutable ] ;
62
62
reserve ( v, n_elts) ;
63
63
let i: uint = 0 u;
64
64
while i < n_elts { v += ~[ mutable op( i) ] ; i += 1 u; }
65
65
ret v;
66
66
}
67
67
68
- fn init_elt[ T ] ( t: & T , n_elts: uint) -> T [ ] {
68
+ fn init_elt [ @ T ] ( t : & T , n_elts : uint ) -> T [ ] {
69
69
let v = ~[ ] ;
70
70
reserve ( v, n_elts) ;
71
71
let i: uint = 0 u;
@@ -74,21 +74,21 @@ fn init_elt[T](t: &T, n_elts: uint) -> T[] {
74
74
}
75
75
76
76
// TODO: Remove me once we have slots.
77
- fn init_elt_mut[ T ] ( t: & T , n_elts: uint) -> T [ mutable ] {
77
+ fn init_elt_mut [ @ T ] ( t : & T , n_elts : uint ) -> T [ mutable ] {
78
78
let v = ~[ mutable ] ;
79
79
reserve ( v, n_elts) ;
80
80
let i: uint = 0 u;
81
81
while i < n_elts { v += ~[ mutable t] ; i += 1 u; }
82
82
ret v;
83
83
}
84
84
85
- fn to_mut[ T ] ( v: & T [ ] ) -> T [ mutable ] {
85
+ fn to_mut [ @ T ] ( v : & T [ ] ) -> T [ mutable ] {
86
86
let vres = ~[ mutable ] ;
87
87
for t: T in v { vres += ~[ mutable t] ; }
88
88
ret vres;
89
89
}
90
90
91
- fn from_mut[ T ] ( v: & T [ mutable ] ) -> T [ ] {
91
+ fn from_mut [ @ T ] ( v : & T [ mutable ] ) -> T [ ] {
92
92
let vres = ~[ ] ;
93
93
for t: T in v { vres += ~[ t] ; }
94
94
ret vres;
@@ -106,21 +106,21 @@ pred is_not_empty[T](v: &T[mutable? ]) -> bool { ret !is_empty(v); }
106
106
// Accessors
107
107
108
108
/// Returns the first element of a vector
109
- fn head[ T ] ( v: & T [ mutable?] ) : is_not_empty ( v) -> T { ret v. ( 0 ) ; }
109
+ fn head[ @ T ] ( v: & T [ mutable?] ) : is_not_empty ( v) -> T { ret v. ( 0 ) ; }
110
110
111
111
/// Returns all but the first element of a vector
112
- fn tail[ T ] ( v: & T [ mutable? ] ) : is_not_empty ( v) -> T [ mutable?] {
112
+ fn tail[ @ T ] ( v: & T [ mutable? ] ) : is_not_empty ( v) -> T [ mutable?] {
113
113
ret slice ( v, 1 u, len ( v) ) ;
114
114
}
115
115
116
116
/// Returns the last element of `v`.
117
- fn last[ T ] ( v: & T [ mutable? ] ) -> option:: t[ T ] {
117
+ fn last[ @ T ] ( v: & T [ mutable? ] ) -> option:: t[ T ] {
118
118
if len ( v) == 0 u { ret none; }
119
119
ret some( v. ( len ( v) - 1 u) ) ;
120
120
}
121
121
122
122
/// Returns a copy of the elements from [`start`..`end`) from `v`.
123
- fn slice[ T ] ( v: & T [ mutable? ] , start: uint, end: uint) -> T [ ] {
123
+ fn slice[ @ T ] ( v: & T [ mutable? ] , start: uint, end: uint) -> T [ ] {
124
124
assert ( start <= end) ;
125
125
assert ( end <= len ( v) ) ;
126
126
let result = ~[ ] ;
@@ -131,7 +131,7 @@ fn slice[T](v: &T[mutable? ], start: uint, end: uint) -> T[] {
131
131
}
132
132
133
133
// TODO: Remove me once we have slots.
134
- fn slice_mut[ T ] ( v: & T [ mutable? ] , start: uint, end: uint) -> T [ mutable ] {
134
+ fn slice_mut[ @ T ] ( v: & T [ mutable? ] , start: uint, end: uint) -> T [ mutable ] {
135
135
assert ( start <= end) ;
136
136
assert ( end <= len ( v) ) ;
137
137
let result = ~[ mutable ] ;
@@ -145,7 +145,7 @@ fn slice_mut[T](v: &T[mutable? ], start: uint, end: uint) -> T[mutable ] {
145
145
// Mutators
146
146
147
147
// TODO: Write this, unsafely, in a way that's not O(n).
148
- fn pop[ T ] ( v: & mutable T [ mutable? ] ) -> T {
148
+ fn pop[ @ T ] ( v: & mutable T [ mutable? ] ) -> T {
149
149
let ln = len ( v) ;
150
150
assert ( ln > 0 u) ;
151
151
ln -= 1 u;
@@ -160,22 +160,22 @@ fn pop[T](v: &mutable T[mutable? ]) -> T {
160
160
// Appending
161
161
162
162
/// Expands the given vector in-place by appending `n` copies of `initval`.
163
- fn grow[ T ] ( v: & mutable T [ ] , n: uint, initval: & T ) {
163
+ fn grow[ @ T ] ( v: & mutable T [ ] , n: uint, initval: & T ) {
164
164
reserve ( v, next_power_of_two ( len ( v) + n) ) ;
165
165
let i: uint = 0 u;
166
166
while i < n { v += ~[ initval] ; i += 1 u; }
167
167
}
168
168
169
169
// TODO: Remove me once we have slots.
170
- fn grow_mut[ T ] ( v: & mutable T [ mutable ] , n: uint, initval: & T ) {
170
+ fn grow_mut[ @ T ] ( v: & mutable T [ mutable ] , n: uint, initval: & T ) {
171
171
reserve ( v, next_power_of_two ( len ( v) + n) ) ;
172
172
let i: uint = 0 u;
173
173
while i < n { v += ~[ mutable initval] ; i += 1 u; }
174
174
}
175
175
176
176
/// Calls `f` `n` times and appends the results of these calls to the given
177
177
/// vector.
178
- fn grow_fn[ T ] ( v: & mutable T [ ] , n: uint, init_fn : fn ( uint) -> T ) {
178
+ fn grow_fn[ @ T ] ( v: & mutable T [ ] , n: uint, init_fn : fn ( uint) -> T ) {
179
179
reserve ( v, next_power_of_two ( len ( v) + n) ) ;
180
180
let i: uint = 0 u;
181
181
while i < n { v += ~[ init_fn ( i) ] ; i += 1 u; }
@@ -192,7 +192,7 @@ fn grow_set[@T](v: &mutable T[mutable ], index: uint, initval: &T, val: &T) {
192
192
193
193
// Functional utilities
194
194
195
- fn map[ T , U ] ( f: fn ( & T ) -> U , v: & T [ mutable? ] ) -> U [ ] {
195
+ fn map[ @ T , @ U ] ( f: fn ( & T ) -> U , v: & T [ mutable? ] ) -> U [ ] {
196
196
let result = ~[ ] ;
197
197
reserve ( result, len ( v) ) ;
198
198
for elem: T in v {
@@ -202,7 +202,7 @@ fn map[T, U](f: fn(&T) -> U , v: &T[mutable? ]) -> U[] {
202
202
ret result;
203
203
}
204
204
205
- fn filter_map[ T , U ] ( f: fn ( & T ) -> option:: t[ U ] , v: & T [ mutable? ] ) -> U [ ] {
205
+ fn filter_map[ @ T , @ U ] ( f: fn ( & T ) -> option:: t[ U ] , v: & T [ mutable? ] ) -> U [ ] {
206
206
let result = ~[ ] ;
207
207
for elem: T in v {
208
208
let elem2 = elem; // satisfies alias checker
@@ -214,7 +214,7 @@ fn filter_map[T, U](f: fn(&T) -> option::t[U] , v: &T[mutable? ]) -> U[] {
214
214
ret result;
215
215
}
216
216
217
- fn foldl[ T , U ] ( p: fn ( & U , & T ) -> U , z: & U , v: & T [ mutable? ] ) -> U {
217
+ fn foldl[ @ T , @ U ] ( p: fn ( & U , & T ) -> U , z: & U , v: & T [ mutable? ] ) -> U {
218
218
let sz = len ( v) ;
219
219
if sz == 0 u { ret z; }
220
220
let first = v. ( 0 ) ;
@@ -243,12 +243,12 @@ fn count[T](x: &T, v: &T[mutable? ]) -> uint {
243
243
ret cnt;
244
244
}
245
245
246
- fn find[ T ] ( f: fn ( & T ) -> bool , v: & T [ ] ) -> option:: t[ T ] {
246
+ fn find[ @ T ] ( f: fn ( & T ) -> bool , v: & T [ ] ) -> option:: t[ T ] {
247
247
for elt: T in v { if f ( elt) { ret some[ T ] ( elt) ; } }
248
248
ret none[ T ] ;
249
249
}
250
250
251
- fn unzip[ T , U ] ( v: & { _0: T , _1: U } [ ] ) -> { _0: T [ ] , _1: U [ ] } {
251
+ fn unzip[ @ T , @ U ] ( v: & { _0: T , _1: U } [ ] ) -> { _0: T [ ] , _1: U [ ] } {
252
252
let sz = len ( v) ;
253
253
if sz == 0 u {
254
254
ret { _0 : ~[ ] , _1 : ~[ ] } ;
@@ -263,7 +263,7 @@ fn unzip[T, U](v: &{_0: T, _1: U}[]) -> {_0: T[], _1: U[]} {
263
263
264
264
265
265
// FIXME make the lengths being equal a constraint
266
- fn zip[ T , U ] ( v: & T [ ] , u: & U [ ] ) -> { _0: T , _1: U } [ ] {
266
+ fn zip[ @ T , @ U ] ( v: & T [ ] , u: & U [ ] ) -> { _0: T , _1: U } [ ] {
267
267
let sz = len ( v) ;
268
268
assert ( sz == len ( u) ) ;
269
269
if sz == 0 u {
@@ -309,5 +309,5 @@ mod unsafe {
309
309
// indent-tabs-mode: nil
310
310
// c-basic-offset: 4
311
311
// buffer-file-coding-system: utf-8-unix
312
- // compile-command: "make -k -C .. 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
312
+ // compile-command: "make -k -C $RBUILD 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
313
313
// End:
0 commit comments