diff options
Diffstat (limited to 'ctr-std/src/net/parser.rs')
| -rw-r--r-- | ctr-std/src/net/parser.rs | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/ctr-std/src/net/parser.rs b/ctr-std/src/net/parser.rs index ae5037c..cf3e535 100644 --- a/ctr-std/src/net/parser.rs +++ b/ctr-std/src/net/parser.rs @@ -53,15 +53,12 @@ impl<'a> Parser<'a> { F: FnOnce(&mut Parser) -> Option<T>, { self.read_atomically(move |p| { - match cb(p) { - Some(x) => if p.is_eof() {Some(x)} else {None}, - None => None, - } + cb(p).filter(|_| p.is_eof()) }) } // Return result of first successful parser - fn read_or<T>(&mut self, parsers: &mut [Box<FnMut(&mut Parser) -> Option<T> + 'static>]) + fn read_or<T>(&mut self, parsers: &mut [Box<dyn FnMut(&mut Parser) -> Option<T> + 'static>]) -> Option<T> { for pf in parsers { if let Some(r) = self.read_atomically(|p: &mut Parser| pf(p)) { |