use thiserror::Error;
use crate::parse::proto::extensions::SimpleExtensionUrn;
use crate::parse::{Anchor, Parse};
pub(crate) trait Context {
fn parse<T: Parse<Self>>(&mut self, item: T) -> Result<T::Parsed, T::Error>
where
Self: Sized,
{
item.parse(self)
}
}
#[derive(Debug, Error, PartialEq)]
pub enum ContextError {
#[error("undefined reference to simple extension with anchor `{0}`")]
UndefinedSimpleExtension(Anchor<SimpleExtensionUrn>),
#[error("duplicate anchor `{0}` for simple extension")]
DuplicateSimpleExtension(Anchor<SimpleExtensionUrn>),
#[error("unsupported simple extension urn: {0}")]
UnsupportedUrn(String),
}