Skip to content

Commit 8c68e87

Browse files
author
Jorge Aparicio
committed
---
yaml --- r: 171815 b: refs/heads/beta c: 37f62ae h: refs/heads/master i: 171813: ef0e9ec 171811: 17004d6 171807: 0a45d34 v: v3
1 parent 49df361 commit 8c68e87

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ refs/heads/automation-fail: 1bf06495443584539b958873e04cc2f864ab10e4
3131
refs/heads/issue-18208-method-dispatch-3-quick-reject: 2009f85b9f99dedcec4404418eda9ddba90258a2
3232
refs/heads/batch: b5571ed71a5879c0495a982506258d5d267744ed
3333
refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
34-
refs/heads/beta: a291a80fbe1222fd708b1e5612b8056cf9311cae
34+
refs/heads/beta: 37f62ae1c0ee44cb6ca563c18da19b8d5be58c0e
3535
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928

branches/beta/src/libstd/io/fs.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -518,14 +518,16 @@ pub fn rmdir(path: &Path) -> IoResult<()> {
518518
/// use std::io;
519519
///
520520
/// // one possible implementation of fs::walk_dir only visiting files
521-
/// fn visit_dirs(dir: &Path, cb: |&Path|) -> io::IoResult<()> {
521+
/// fn visit_dirs<F>(dir: &Path, cb: &mut F) -> io::IoResult<()> where
522+
/// F: FnMut(&Path),
523+
/// {
522524
/// if dir.is_dir() {
523525
/// let contents = try!(fs::readdir(dir));
524526
/// for entry in contents.iter() {
525527
/// if entry.is_dir() {
526-
/// try!(visit_dirs(entry, |p| cb(p)));
528+
/// try!(visit_dirs(entry, cb));
527529
/// } else {
528-
/// cb(entry);
530+
/// (*cb)(entry);
529531
/// }
530532
/// }
531533
/// Ok(())

branches/beta/src/libstd/io/net/ip.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717

1818
pub use self::IpAddr::*;
1919

20+
use boxed::Box;
2021
use fmt;
2122
use io::{self, IoResult, IoError};
2223
use io::net;
2324
use iter::{Iterator, IteratorExt};
24-
use ops::FnOnce;
25+
use ops::{FnOnce, FnMut};
2526
use option::Option;
2627
use option::Option::{None, Some};
2728
use result::Result::{Ok, Err};
@@ -120,10 +121,10 @@ impl<'a> Parser<'a> {
120121
}
121122

122123
// Return result of first successful parser
123-
fn read_or<T>(&mut self, parsers: &mut [|&mut Parser| -> Option<T>])
124+
fn read_or<T>(&mut self, parsers: &mut [Box<FnMut(&mut Parser) -> Option<T>>])
124125
-> Option<T> {
125126
for pf in parsers.iter_mut() {
126-
match self.read_atomically(|p: &mut Parser| (*pf)(p)) {
127+
match self.read_atomically(|p: &mut Parser| pf.call_mut((p,))) {
127128
Some(r) => return Some(r),
128129
None => {}
129130
}
@@ -320,22 +321,22 @@ impl<'a> Parser<'a> {
320321
}
321322

322323
fn read_ip_addr(&mut self) -> Option<IpAddr> {
323-
let ipv4_addr = |p: &mut Parser| p.read_ipv4_addr();
324-
let ipv6_addr = |p: &mut Parser| p.read_ipv6_addr();
325-
self.read_or(&mut [ipv4_addr, ipv6_addr])
324+
let ipv4_addr = |&mut: p: &mut Parser| p.read_ipv4_addr();
325+
let ipv6_addr = |&mut: p: &mut Parser| p.read_ipv6_addr();
326+
self.read_or(&mut [box ipv4_addr, box ipv6_addr])
326327
}
327328

328329
fn read_socket_addr(&mut self) -> Option<SocketAddr> {
329330
let ip_addr = |&: p: &mut Parser| {
330-
let ipv4_p = |p: &mut Parser| p.read_ip_addr();
331-
let ipv6_p = |p: &mut Parser| {
331+
let ipv4_p = |&mut: p: &mut Parser| p.read_ip_addr();
332+
let ipv6_p = |&mut: p: &mut Parser| {
332333
let open_br = |&: p: &mut Parser| p.read_given_char('[');
333334
let ip_addr = |&: p: &mut Parser| p.read_ipv6_addr();
334335
let clos_br = |&: p: &mut Parser| p.read_given_char(']');
335336
p.read_seq_3::<char, IpAddr, char, _, _, _>(open_br, ip_addr, clos_br)
336337
.map(|t| match t { (_, ip, _) => ip })
337338
};
338-
p.read_or(&mut [ipv4_p, ipv6_p])
339+
p.read_or(&mut [box ipv4_p, box ipv6_p])
339340
};
340341
let colon = |&: p: &mut Parser| p.read_given_char(':');
341342
let port = |&: p: &mut Parser| p.read_number(10, 5, 0x10000).map(|n| n as u16);

0 commit comments

Comments
 (0)