pub fn derive_enum_docs(input: TokenStream) -> TokenStream {
    let input: DeriveInput = parse_macro_input!(input);

    match &input.data {
        // Only if data is an enum, we do parsing
        Data::Enum(data_enum) => {
            // data_enum is of type syn::DataEnum
            // https://doc.servo.org/syn/struct.DataEnum.html

            let mut names = String::new();

            // For each variant, push its name onto `names`
            for variant in &data_enum.variants {
                let doc = parse_enum_doc_comment(&variant.attrs);

                write!(names, "\n{}{}", variant.ident, doc).expect("failed to derive enum docs");
            }

            // The enum's name
            let name = &input.ident;
            let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
            quote! {
                impl #impl_generics #name #ty_generics #where_clause {
                    pub const fn documentation() -> &'static str {
                        #names
                    }
                }
            }
            .into()
        }
        _ => derive_error!("EnumDocs can only be implemented for enums"),
    }
}
Returns a const str for the Enum to which it applies.

# Example:
```
#[derive(leftwm_macros::EnumDocs)]
enum LeftWm {
One,
/// Doc comment
Two
}

assert_eq!(LeftWm::documentation(), "\nOne\nTwo\n    Doc comment");
```

The purpose of this macro is for serializing options of the `BaseCommand` for `leftwm-command`
leftwm-macros/src/lib.rs