Macro declare_language

Source
macro_rules! declare_language {
    (
        $(#[$the_lang_m:meta])*
        $the_lang_v:vis mod $the_lang:ident {
            const NAME = $name:expr;
            type Kind = $kind:ty;
            type Parameter = $param:ty;
            const BINDING_OPEN = $binding_open:expr;
            const BINDING_CLOSE = $binding_close:expr;
        }
    ) => { ... };
}
Expand description

Declares a new formality language. This will generate a module with a name you choose that contains various items; among them will be a struct named FormalityLang that implements the Language trait. When you use the auto-derives or the term macro, they will generate code that references crate::FormalityLang, so you need to bring that in scope at the root of your crate (e.g., if you called the module mylang, you might add use crate::mylang::FormalityLang at the root of your crate, so that the auto-derives can find it.)

See the mdbook for more coverage of how it works.