use crate::wit;
#[derive(Clone)]
pub struct Token(wit::Token);
impl std::fmt::Debug for Token {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Token").finish_non_exhaustive()
}
}
impl From<wit::Token> for Token {
fn from(token: wit::Token) -> Self {
Self(token)
}
}
impl From<Token> for wit::Token {
fn from(token: Token) -> Self {
token.0
}
}
impl Token {
pub fn anonymous() -> Self {
Self(wit::Token::Anonymous)
}
pub fn from_bytes(bytes: Vec<u8>) -> Self {
Self(wit::Token::Bytes(bytes))
}
pub fn is_anonymous(&self) -> bool {
matches!(self.0, wit::Token::Anonymous)
}
pub fn into_bytes(self) -> Option<Vec<u8>> {
match self.0 {
wit::Token::Anonymous => None,
wit::Token::Bytes(bytes) => Some(bytes),
}
}
pub fn as_bytes(&self) -> Option<&[u8]> {
match &self.0 {
wit::Token::Anonymous => None,
wit::Token::Bytes(bytes) => Some(bytes),
}
}
}