diff --git a/radicle-git-ext/src/commit/trailers.rs b/radicle-git-ext/src/commit/trailers.rs index 7265d81..00b4c42 100644 --- a/radicle-git-ext/src/commit/trailers.rs +++ b/radicle-git-ext/src/commit/trailers.rs @@ -130,6 +130,19 @@ impl Deref for Token<'_> { } } +impl<'a> TryFrom<&'a str> for Token<'a> { + type Error = &'static str; + + fn try_from(s: &'a str) -> Result { + let is_token = s.chars().all(|c| c.is_alphanumeric() || c == '-'); + if is_token { + Ok(Token(s)) + } else { + Err("token contains invalid characters") + } + } +} + pub struct Display<'a> { trailer: &'a Trailer<'a>, separator: &'a str,