//! Core types for the attribute grammar system.
//!
//! This module provides the foundational types that extension crates
//! will use when defining attribute grammars with `define_attr_grammar!`.

/// Marker trait for attribute types generated by `define_attr_grammar!`.
///
/// This allows generic code to work with any attribute grammar.
///
/// # Example
///
/// Extension crates implement this on their generated `Attr` enum:
///
/// ```ignore
/// facet::define_attr_grammar! {
///     pub enum Attr {
///         Skip,
///         Rename(&'static str),
///     }
/// }
///
/// // The macro generates:
/// impl AttrEnum for Attr {
///     const NAME: &'static str = "my_extension";
/// }
/// ```
pub trait AttrEnum: 'static + Sized {
    /// The name of this attribute grammar (e.g., "orm", "xml")
    const NAME: &'static str;
}
