Skip to content

Commit f3a429e

Browse files
committed
std: update Option::chain{,_ref,_mut_ref} to chain{_move,,_mut}
cc rust-lang#7887
1 parent f2b452d commit f3a429e

File tree

10 files changed

+27
-27
lines changed

10 files changed

+27
-27
lines changed

src/librustc/front/config.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ fn filter_view_item<'r>(cx: @Context, view_item: &'r ast::view_item)-> Option<&'
5858

5959
fn fold_mod(cx: @Context, m: &ast::_mod, fld: @fold::ast_fold) -> ast::_mod {
6060
let filtered_items = do m.items.iter().filter_map |a| {
61-
filter_item(cx, *a).chain(|x| fld.fold_item(x))
61+
filter_item(cx, *a).chain_move(|x| fld.fold_item(x))
6262
}.collect();
6363
let filtered_view_items = do m.view_items.iter().filter_map |a| {
6464
do filter_view_item(cx, a).map_move |x| {
@@ -139,7 +139,7 @@ fn fold_block(
139139
fld: @fold::ast_fold
140140
) -> ast::Block {
141141
let resulting_stmts = do b.stmts.iter().filter_map |a| {
142-
filter_stmt(cx, *a).chain(|stmt| fld.fold_stmt(stmt))
142+
filter_stmt(cx, *a).chain_move(|stmt| fld.fold_stmt(stmt))
143143
}.collect();
144144
let filtered_view_items = do b.view_items.iter().filter_map |a| {
145145
filter_view_item(cx, a).map(|x| fld.fold_view_item(*x))

src/librustc/metadata/decoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ fn each_reexport(d: ebml::Doc, f: &fn(ebml::Doc) -> bool) -> bool {
208208
}
209209

210210
fn variant_disr_val(d: ebml::Doc) -> Option<ty::Disr> {
211-
do reader::maybe_get_doc(d, tag_disr_val).chain |val_doc| {
211+
do reader::maybe_get_doc(d, tag_disr_val).chain_move |val_doc| {
212212
do reader::with_doc_data(val_doc) |data| { u64::parse_bytes(data, 10u) }
213213
}
214214
}

src/librustc/middle/trans/common.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ impl get_node_info for ast::Block {
505505

506506
impl get_node_info for Option<@ast::Expr> {
507507
fn info(&self) -> Option<NodeInfo> {
508-
self.chain_ref(|s| s.info())
508+
self.chain(|s| s.info())
509509
}
510510
}
511511

src/librustc/middle/trans/value.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ impl Value {
5252
pub fn get_dominating_store(self, bcx: @mut Block) -> Option<Value> {
5353
match self.get_single_user().chain(|user| user.as_store_inst()) {
5454
Some(store) => {
55-
do store.get_parent().chain |store_bb| {
55+
do store.get_parent().chain_move |store_bb| {
5656
let mut bb = BasicBlock(bcx.llbb);
5757
let mut ret = Some(store);
5858
while *bb != *store_bb {

src/librustc/middle/typeck/astconv.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ pub fn ty_of_closure<AC:AstConv,RS:RegionScope + Clone + 'static>(
745745
RegionParamNames(bound_lifetime_names.clone()));
746746

747747
let input_tys = do decl.inputs.iter().enumerate().map |(i, a)| {
748-
let expected_arg_ty = do expected_sig.chain_ref |e| {
748+
let expected_arg_ty = do expected_sig.chain |e| {
749749
// no guarantee that the correct number of expected args
750750
// were supplied
751751
if i < e.inputs.len() {Some(e.inputs[i])} else {None}

src/librustpkg/version.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ pub fn try_getting_local_version(local_path: &Path) -> Option<Version> {
118118
if !l.is_whitespace() {
119119
output = Some(l);
120120
}
121-
match output.chain(try_parsing_version) {
121+
match output.chain_move(try_parsing_version) {
122122
Some(v) => return Some(v),
123123
None => ()
124124
}
@@ -158,7 +158,7 @@ pub fn try_getting_version(remote_path: &Path) -> Option<Version> {
158158
}
159159
}
160160

161-
output.chain(try_parsing_version)
161+
output.chain_move(try_parsing_version)
162162
}
163163
else {
164164
None

src/libstd/iter.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1474,7 +1474,7 @@ pub struct Scan<'self, A, B, T, St> {
14741474
impl<'self, A, B, T: Iterator<A>, St> Iterator<B> for Scan<'self, A, B, T, St> {
14751475
#[inline]
14761476
fn next(&mut self) -> Option<B> {
1477-
self.iter.next().chain(|a| (self.f)(&mut self.state, a))
1477+
self.iter.next().chain_move(|a| (self.f)(&mut self.state, a))
14781478
}
14791479

14801480
#[inline]
@@ -1505,7 +1505,7 @@ impl<'self, A, T: Iterator<A>, B, U: Iterator<B>> Iterator<B> for
15051505
}
15061506
}
15071507
match self.iter.next().map_move(|x| (self.f)(x)) {
1508-
None => return self.backiter.chain_mut_ref(|it| it.next()),
1508+
None => return self.backiter.chain_mut(|it| it.next()),
15091509
next => self.frontiter = next,
15101510
}
15111511
}
@@ -1537,7 +1537,7 @@ impl<'self,
15371537
}
15381538
}
15391539
match self.iter.next_back().map_move(|x| (self.f)(x)) {
1540-
None => return self.frontiter.chain_mut_ref(|it| it.next_back()),
1540+
None => return self.frontiter.chain_mut(|it| it.next_back()),
15411541
next => self.backiter = next,
15421542
}
15431543
}

src/libstd/option.rs

+12-12
Original file line numberDiff line numberDiff line change
@@ -165,20 +165,10 @@ impl<T> Option<T> {
165165
}
166166
}
167167

168-
/// Update an optional value by optionally running its content through a
169-
/// function that returns an option.
170-
#[inline]
171-
pub fn chain<U>(self, f: &fn(T) -> Option<U>) -> Option<U> {
172-
match self {
173-
Some(t) => f(t),
174-
None => None
175-
}
176-
}
177-
178168
/// Update an optional value by optionally running its content by reference
179169
/// through a function that returns an option.
180170
#[inline]
181-
pub fn chain_ref<'a, U>(&'a self, f: &fn(x: &'a T) -> Option<U>) -> Option<U> {
171+
pub fn chain<'a, U>(&'a self, f: &fn(x: &'a T) -> Option<U>) -> Option<U> {
182172
match *self {
183173
Some(ref x) => f(x),
184174
None => None
@@ -188,13 +178,23 @@ impl<T> Option<T> {
188178
/// Update an optional value by optionally running its content by mut reference
189179
/// through a function that returns an option.
190180
#[inline]
191-
pub fn chain_mut_ref<'a, U>(&'a mut self, f: &fn(x: &'a mut T) -> Option<U>) -> Option<U> {
181+
pub fn chain_mut<'a, U>(&'a mut self, f: &fn(x: &'a mut T) -> Option<U>) -> Option<U> {
192182
match *self {
193183
Some(ref mut x) => f(x),
194184
None => None
195185
}
196186
}
197187

188+
/// Update an optional value by optionally running its content through a
189+
/// function that returns an option.
190+
#[inline]
191+
pub fn chain_move<U>(self, f: &fn(T) -> Option<U>) -> Option<U> {
192+
match self {
193+
Some(t) => f(t),
194+
None => None
195+
}
196+
}
197+
198198
/// Filters an optional value using given function.
199199
#[inline(always)]
200200
pub fn filtered(self, f: &fn(t: &T) -> bool) -> Option<T> {

src/libstd/rt/io/net/ip.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ impl<'self> Parser<'self> {
177177
}
178178

179179
do self.read_atomically |p| {
180-
p.read_char().chain(|c| parse_digit(c, radix))
180+
p.read_char().chain_move(|c| parse_digit(c, radix))
181181
}
182182
}
183183

src/libsyntax/ext/expand.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -331,11 +331,11 @@ pub fn expand_item_mac(extsbox: @mut SyntaxEnv,
331331
};
332332

333333
let maybe_it = match expanded {
334-
MRItem(it) => mark_item(it,fm).chain(|i| {fld.fold_item(i)}),
334+
MRItem(it) => mark_item(it,fm).chain_move(|i| {fld.fold_item(i)}),
335335
MRExpr(_) => cx.span_fatal(pth.span,
336336
fmt!("expr macro in item position: %s", extnamestr)),
337-
MRAny(_, item_maker, _) => item_maker().chain(|i| {mark_item(i,fm)})
338-
.chain(|i| {fld.fold_item(i)}),
337+
MRAny(_, item_maker, _) => item_maker().chain_move(|i| {mark_item(i,fm)})
338+
.chain_move(|i| {fld.fold_item(i)}),
339339
MRDef(ref mdef) => {
340340
// yikes... no idea how to apply the mark to this. I'm afraid
341341
// we're going to have to wait-and-see on this one.

0 commit comments

Comments
 (0)