@@ -72,12 +72,9 @@ pub trait FromIter<T> {
72
72
#[ inline]
73
73
pub fn any < T > ( predicate : & fn ( T ) -> bool ,
74
74
iter : & fn ( f : & fn ( T ) -> bool ) -> bool ) -> bool {
75
- for iter |x| {
76
- if predicate ( x) {
77
- return true ;
78
- }
75
+ do iter |x| {
76
+ predicate ( x)
79
77
}
80
- return false ;
81
78
}
82
79
83
80
/**
@@ -111,12 +108,14 @@ pub fn all<T>(predicate: &fn(T) -> bool,
111
108
#[ inline]
112
109
pub fn find < T > ( predicate : & fn ( & T ) -> bool ,
113
110
iter : & fn ( f : & fn ( T ) -> bool ) -> bool ) -> Option < T > {
114
- for iter |x| {
111
+ let mut ret = None ;
112
+ do iter |x| {
115
113
if predicate ( & x) {
116
- return Some ( x) ;
117
- }
118
- }
119
- None
114
+ ret = Some ( x) ;
115
+ false
116
+ } else { true }
117
+ } ;
118
+ ret
120
119
}
121
120
122
121
/**
@@ -132,7 +131,7 @@ pub fn find<T>(predicate: &fn(&T) -> bool,
132
131
#[ inline]
133
132
pub fn max < T : Ord > ( iter : & fn ( f : & fn ( T ) -> bool ) -> bool ) -> Option < T > {
134
133
let mut result = None ;
135
- for iter |x| {
134
+ do iter |x| {
136
135
match result {
137
136
Some ( ref mut y) => {
138
137
if x > * y {
@@ -141,7 +140,8 @@ pub fn max<T: Ord>(iter: &fn(f: &fn(T) -> bool) -> bool) -> Option<T> {
141
140
}
142
141
None => result = Some ( x)
143
142
}
144
- }
143
+ true
144
+ } ;
145
145
result
146
146
}
147
147
@@ -158,7 +158,7 @@ pub fn max<T: Ord>(iter: &fn(f: &fn(T) -> bool) -> bool) -> Option<T> {
158
158
#[ inline]
159
159
pub fn min < T : Ord > ( iter : & fn ( f : & fn ( T ) -> bool ) -> bool ) -> Option < T > {
160
160
let mut result = None ;
161
- for iter |x| {
161
+ do iter |x| {
162
162
match result {
163
163
Some ( ref mut y) => {
164
164
if x < * y {
@@ -167,7 +167,8 @@ pub fn min<T: Ord>(iter: &fn(f: &fn(T) -> bool) -> bool) -> Option<T> {
167
167
}
168
168
None => result = Some ( x)
169
169
}
170
- }
170
+ true
171
+ } ;
171
172
result
172
173
}
173
174
@@ -183,9 +184,10 @@ pub fn min<T: Ord>(iter: &fn(f: &fn(T) -> bool) -> bool) -> Option<T> {
183
184
#[ inline]
184
185
pub fn fold < T , U > ( start : T , iter : & fn ( f : & fn ( U ) -> bool ) -> bool , f : & fn ( & mut T , U ) ) -> T {
185
186
let mut result = start;
186
- for iter |x| {
187
+ do iter |x| {
187
188
f ( & mut result, x) ;
188
- }
189
+ true
190
+ } ;
189
191
result
190
192
}
191
193
@@ -206,9 +208,10 @@ pub fn fold<T, U>(start: T, iter: &fn(f: &fn(U) -> bool) -> bool, f: &fn(&mut T,
206
208
#[ inline]
207
209
pub fn fold_ref < T , U > ( start : T , iter : & fn ( f : & fn ( & U ) -> bool ) -> bool , f : & fn ( & mut T , & U ) ) -> T {
208
210
let mut result = start;
209
- for iter |x| {
211
+ do iter |x| {
210
212
f ( & mut result, x) ;
211
- }
213
+ true
214
+ } ;
212
215
result
213
216
}
214
217
@@ -246,7 +249,7 @@ impl<T> FromIter<T> for ~[T]{
246
249
#[ inline]
247
250
pub fn from_iter ( iter : & fn ( f : & fn ( T ) -> bool ) -> bool ) -> ~[ T ] {
248
251
let mut v = ~[ ] ;
249
- for iter |x| { v. push ( x) }
252
+ do iter |x| { v. push ( x) ; true } ;
250
253
v
251
254
}
252
255
}
0 commit comments