use static_regular_grammar::RegularGrammar;
use super::{Lexical, LexicalFormOf};
#[derive(RegularGrammar, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[grammar(sized(QNameBuf, derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)))]
pub struct QName(str);
impl Lexical for QName {
type Error = InvalidQName<String>;
fn parse(value: &str) -> Result<&Self, Self::Error> {
Self::new(value).map_err(|_| InvalidQName(value.to_owned()))
}
}
impl LexicalFormOf<QNameBuf> for QName {
type ValueError = std::convert::Infallible;
fn try_as_value(&self) -> Result<QNameBuf, Self::ValueError> {
Ok(self.to_owned())
}
}