summaryrefslogtreecommitdiffstats
path: root/openpgp/src/cert/parser/low_level/lexer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openpgp/src/cert/parser/low_level/lexer.rs')
-rw-r--r--openpgp/src/cert/parser/low_level/lexer.rs28
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),
}
}
}