Compile-time plugins: Re-purposing Cargo `[patch]` and proc-macros

I've been experimenting with how a compile-time plugin system might work in Rust.
Specifically I'd like library users to replace the (default) implementation of an proc-macro-attribute with their implementation. The library functions are decorated with the proc-macro-attributes, in this way users are able to customize the library behavior (at compile-time). In case it matters the plugins alter tracing behavior.

There are some very good blog posts describing how to setup run-time plugins. But less on the compile-time plugins idea.

As best I can tell a compile-time plugin 'setup' would use proc-macros and the Cargo [patch] stanza in the user application Cargo.toml (or .cargo/config.toml).
Indeed, with some rough edges, I have something functional - the roughness comes about when trying to have a [patch.cargo-io] interact with package renaming in the [dependencies] stanza.
However, I am uncertain if I have correctly inferred that this is the blessed way to do this in Rust?

My doubt is due to the fact that the documentation (below) dealing with the use of [patch], has four scenarios all dealing with development and shorter lived activities, and doesn't mention the ability to provider library users with compile-time plugins that can alter the library behavior (with caveats):

https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html

Are proc-macros+[patch] the correct way to do this or is there some other Rust pattern better suited?

Moving this to internals-forum (per the Cargo github repo link):