Skip to content

Commit 1074fff

Browse files
author
Jorge Aparicio
committed
---
yaml --- r: 169313 b: refs/heads/master c: 37f62ae h: refs/heads/master i: 169311: 5251c38 v: v3
1 parent ebec67b commit 1074fff

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
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: a291a80fbe1222fd708b1e5612b8056cf9311cae
2+
refs/heads/master: 37f62ae1c0ee44cb6ca563c18da19b8d5be58c0e
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 5b3cd3900ceda838f5798c30ab96ceb41f962534
55
refs/heads/try: 5204084bd2e46af7cc6e0147430e44dd0d657bbb

trunk/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(())

trunk/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)