Hi everyone, I've been working a lot on coi and have been really happy with my progress so far. That being said, I've been a bit confused on the best way to approach how to expose the proc-macros within it. When using actix-web
, my users need to add this to their Cargo.toml
:
coi = { package = "coi-actix-web", version = "0.4.0" }
And this is because the package coi-actix-web re-exports the proc macros from coi
. I was hoping that there was a way to somehow tell the proc macro "Use this name as the root crate when generating code", but I haven't found a way to make that work.
I wanted to make it seem obvious to users that they could implement hooks for coi
for their own web frameworks, rather than requiring all of them to be written within coi
itself. That's why coi-actix-web
is not just a feature flag within coi
itself. Would it be better to just require users to import both crates? I kept them together because I ran into a lot of issues ensuring the crates were in sync within a local branch of coi-actix-sample (the sample project that really shows off how it all comes together, still a work in progress). The local branch relies a lot more heavily on workspaces and separate crates, so updating the deps in each crate was a pain, and only the web layer really needed coi-actix-web
. (The local one is trying to show off advantages when using a hexagonal architecture).
Is there anything else I could provide that would make it easier to help me figure out how to make this cleaner?