diff options
Diffstat (limited to 'openpgp/src/cert/parser/low_level/lexer.rs')
-rw-r--r-- | openpgp/src/cert/parser/low_level/lexer.rs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/openpgp/src/cert/parser/low_level/lexer.rs b/openpgp/src/cert/parser/low_level/lexer.rs index 0838d2b1..8cd23c5b 100644 --- a/openpgp/src/cert/parser/low_level/lexer.rs +++ b/openpgp/src/cert/parser/low_level/lexer.rs @@ -112,20 +112,22 @@ impl From<Token> for Option<Packet> { } } -impl From<Packet> for Option<Token> { - fn from(p: Packet) -> Self { +impl std::convert::TryFrom<Packet> for Token { + type Error = Packet; + + fn try_from(p: Packet) -> std::result::Result<Self, Self::Error> { match p.tag() { - Tag::PublicKey => Some(Token::PublicKey(Some(p))), - Tag::SecretKey => Some(Token::SecretKey(Some(p))), - Tag::PublicSubkey => Some(Token::PublicSubkey(Some(p))), - Tag::SecretSubkey => Some(Token::SecretSubkey(Some(p))), - Tag::UserID => Some(Token::UserID(Some(p))), - Tag::UserAttribute => Some(Token::UserAttribute(Some(p))), - Tag::Signature => Some(Token::Signature(Some(p))), - Tag::Trust => Some(Token::Trust(Some(p))), - t @ Tag::Unknown(_) => Some(Token::Unknown(t, Some(p))), - t @ Tag::Private(_) => Some(Token::Unknown(t, Some(p))), - _ => None, + Tag::PublicKey => Ok(Token::PublicKey(Some(p))), + Tag::SecretKey => Ok(Token::SecretKey(Some(p))), + Tag::PublicSubkey => Ok(Token::PublicSubkey(Some(p))), + Tag::SecretSubkey => Ok(Token::SecretSubkey(Some(p))), + Tag::UserID => Ok(Token::UserID(Some(p))), + Tag::UserAttribute => Ok(Token::UserAttribute(Some(p))), + Tag::Signature => Ok(Token::Signature(Some(p))), + Tag::Trust => Ok(Token::Trust(Some(p))), + t @ Tag::Unknown(_) => Ok(Token::Unknown(t, Some(p))), + t @ Tag::Private(_) => Ok(Token::Unknown(t, Some(p))), + _ => Err(p), } } } |