use crate::wit;
pub enum DirectiveSite<'a> {
Object(ObjectDirectiveSite<'a>),
FieldDefinition(FieldDefinitionDirectiveSite<'a>),
Interface(InterfaceDirectiveSite<'a>),
Union(UnionDirectiveSite<'a>),
Enum(EnumDirectiveSite<'a>),
Scalar(ScalarDirectiveSite<'a>),
}
impl<'a> From<&'a wit::DirectiveSite> for DirectiveSite<'a> {
fn from(value: &'a wit::DirectiveSite) -> Self {
match value {
wit::DirectiveSite::Object(site) => DirectiveSite::Object(site.into()),
wit::DirectiveSite::FieldDefinition(site) => DirectiveSite::FieldDefinition(site.into()),
wit::DirectiveSite::Interface(site) => DirectiveSite::Interface(site.into()),
wit::DirectiveSite::Union(site) => DirectiveSite::Union(site.into()),
wit::DirectiveSite::Enum(site) => DirectiveSite::Enum(site.into()),
wit::DirectiveSite::Scalar(site) => DirectiveSite::Scalar(site.into()),
}
}
}
pub struct ObjectDirectiveSite<'a>(&'a wit::ObjectDirectiveSite);
impl<'a> ObjectDirectiveSite<'a> {
#[inline]
pub fn name(&self) -> &'a str {
&self.0.object_name
}
}
impl<'a> From<&'a wit::ObjectDirectiveSite> for ObjectDirectiveSite<'a> {
fn from(value: &'a wit::ObjectDirectiveSite) -> Self {
Self(value)
}
}
pub struct FieldDefinitionDirectiveSite<'a>(&'a wit::FieldDefinitionDirectiveSite);
impl<'a> FieldDefinitionDirectiveSite<'a> {
#[inline]
pub fn parent_type_name(&self) -> &'a str {
&self.0.parent_type_name
}
#[inline]
pub fn name(&self) -> &'a str {
&self.0.field_name
}
}
impl<'a> From<&'a wit::FieldDefinitionDirectiveSite> for FieldDefinitionDirectiveSite<'a> {
fn from(value: &'a wit::FieldDefinitionDirectiveSite) -> Self {
Self(value)
}
}
pub struct UnionDirectiveSite<'a>(&'a wit::UnionDirectiveSite);
impl<'a> UnionDirectiveSite<'a> {
#[inline]
pub fn name(&self) -> &'a str {
&self.0.union_name
}
}
impl<'a> From<&'a wit::UnionDirectiveSite> for UnionDirectiveSite<'a> {
fn from(value: &'a wit::UnionDirectiveSite) -> Self {
Self(value)
}
}
pub struct InterfaceDirectiveSite<'a>(&'a wit::InterfaceDirectiveSite);
impl<'a> InterfaceDirectiveSite<'a> {
#[inline]
pub fn name(&self) -> &'a str {
&self.0.interface_name
}
}
impl<'a> From<&'a wit::InterfaceDirectiveSite> for InterfaceDirectiveSite<'a> {
fn from(value: &'a wit::InterfaceDirectiveSite) -> Self {
Self(value)
}
}
pub struct ScalarDirectiveSite<'a>(&'a wit::ScalarDirectiveSite);
impl<'a> ScalarDirectiveSite<'a> {
#[inline]
pub fn name(&self) -> &'a str {
&self.0.scalar_name
}
}
impl<'a> From<&'a wit::ScalarDirectiveSite> for ScalarDirectiveSite<'a> {
fn from(value: &'a wit::ScalarDirectiveSite) -> Self {
Self(value)
}
}
pub struct EnumDirectiveSite<'a>(&'a wit::EnumDirectiveSite);
impl<'a> EnumDirectiveSite<'a> {
#[inline]
pub fn name(&self) -> &'a str {
&self.0.enum_name
}
}
impl<'a> From<&'a wit::EnumDirectiveSite> for EnumDirectiveSite<'a> {
fn from(value: &'a wit::EnumDirectiveSite) -> Self {
Self(value)
}
}