Workspace Setup and proc-macro Crate

You need two crates, a "backend" crate that defines the procedural macros and the procedural macros only, and a "frontend" crate that re-exports the procedural macros and defines everything else (functions, types, traits, #[macro_export] macro_rules! macros).

I detailed this pattern in this post: Proc macros - using third party crate - #4 by Yandros