use { crate::utils::opaque::{OPAQUE_LEN, Opaque, OpaqueError, opaque}, arrayvec::ArrayString, std::{ fmt::{Display, Formatter}, str::FromStr, }, }; #[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)] pub struct ActivationToken(Opaque); pub fn activation_token() -> ActivationToken { ActivationToken(opaque()) } impl ActivationToken { pub fn to_string(self) -> ArrayString { self.0.to_string() } } impl Display for ActivationToken { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { self.0.fmt(f) } } impl FromStr for ActivationToken { type Err = OpaqueError; fn from_str(s: &str) -> Result { Ok(Self(s.parse()?)) } }