Skip to content

Commit 931be6c

Browse files
authored
Rollup merge of rust-lang#67085 - reitermarkus:addr-parser, r=Mark-Simulacrum
Remove boxed closures in address parser. Simplify address parser by removing unnecessary boxed closures. Also relevant for rust-lang/rfcs#2832.
2 parents cc7c45f + 79f8764 commit 931be6c

File tree

1 file changed

+4
-19
lines changed

1 file changed

+4
-19
lines changed

src/libstd/net/parser.rs

+4-19
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,6 @@ impl<'a> Parser<'a> {
4444
self.read_atomically(move |p| cb(p).filter(|_| p.is_eof()))
4545
}
4646

47-
// Return result of first successful parser
48-
fn read_or<T>(
49-
&mut self,
50-
parsers: &mut [Box<dyn FnMut(&mut Parser<'_>) -> Option<T> + 'static>],
51-
) -> Option<T> {
52-
for pf in parsers {
53-
if let Some(r) = self.read_atomically(|p: &mut Parser<'_>| pf(p)) {
54-
return Some(r);
55-
}
56-
}
57-
None
58-
}
59-
6047
// Apply 3 parsers sequentially
6148
fn read_seq_3<A, B, C, PA, PB, PC>(&mut self, pa: PA, pb: PB, pc: PC) -> Option<(A, B, C)>
6249
where
@@ -235,9 +222,8 @@ impl<'a> Parser<'a> {
235222
}
236223

237224
fn read_ip_addr(&mut self) -> Option<IpAddr> {
238-
let ipv4_addr = |p: &mut Parser<'_>| p.read_ipv4_addr().map(IpAddr::V4);
239-
let ipv6_addr = |p: &mut Parser<'_>| p.read_ipv6_addr().map(IpAddr::V6);
240-
self.read_or(&mut [Box::new(ipv4_addr), Box::new(ipv6_addr)])
225+
self.read_ipv4_addr().map(IpAddr::V4)
226+
.or_else(|| self.read_ipv6_addr().map(IpAddr::V6))
241227
}
242228

243229
fn read_socket_addr_v4(&mut self) -> Option<SocketAddrV4> {
@@ -268,9 +254,8 @@ impl<'a> Parser<'a> {
268254
}
269255

270256
fn read_socket_addr(&mut self) -> Option<SocketAddr> {
271-
let v4 = |p: &mut Parser<'_>| p.read_socket_addr_v4().map(SocketAddr::V4);
272-
let v6 = |p: &mut Parser<'_>| p.read_socket_addr_v6().map(SocketAddr::V6);
273-
self.read_or(&mut [Box::new(v4), Box::new(v6)])
257+
self.read_socket_addr_v4().map(SocketAddr::V4)
258+
.or_else(|| self.read_socket_addr_v6().map(SocketAddr::V6))
274259
}
275260
}
276261

0 commit comments

Comments
 (0)