diff options
Diffstat (limited to 'openpgp/src/parse.rs')
-rw-r--r-- | openpgp/src/parse.rs | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/openpgp/src/parse.rs b/openpgp/src/parse.rs index 16c7ec6e..f36f634c 100644 --- a/openpgp/src/parse.rs +++ b/openpgp/src/parse.rs @@ -175,6 +175,7 @@ use std::str; use std::mem; use std::fmt; use std::path::Path; +use std::result::Result as StdResult; use ::buffered_reader::*; @@ -3315,20 +3316,20 @@ impl<'a> PacketParserResult<'a> { } /// Like `Option::as_ref`(). - pub fn as_ref(&self) -> Option<&PacketParser<'a>> { - if let PacketParserResult::Some(ref pp) = self { - Some(pp) - } else { - None + pub fn as_ref(&self) + -> StdResult<&PacketParser<'a>, &PacketParserEOF> { + match self { + PacketParserResult::Some(pp) => Ok(pp), + PacketParserResult::EOF(eof) => Err(eof), } } /// Like `Option::as_mut`(). - pub fn as_mut(&mut self) -> Option<&mut PacketParser<'a>> { - if let PacketParserResult::Some(ref mut pp) = self { - Some(pp) - } else { - None + pub fn as_mut(&mut self) + -> StdResult<&mut PacketParser<'a>, &mut PacketParserEOF> { + match self { + PacketParserResult::Some(pp) => Ok(pp), + PacketParserResult::EOF(eof) => Err(eof), } } @@ -3345,12 +3346,12 @@ impl<'a> PacketParserResult<'a> { } /// Like `Option::map`(). - pub fn map<U, F>(self, f: F) -> Option<U> + pub fn map<U, F>(self, f: F) -> StdResult<U, PacketParserEOF> where F: FnOnce(PacketParser<'a>) -> U { match self { - PacketParserResult::Some(x) => Some(f(x)), - PacketParserResult::EOF(_) => None, + PacketParserResult::Some(x) => Ok(f(x)), + PacketParserResult::EOF(e) => Err(e), } } } |