(Correct me if I'm wrong about how Protocol Buffers work)
I think Serde is the closest thing I've seen to what I'm getting at; the way it can freely translate between XML and JSON and Rust structures without any help. But of course it's not a standalone schema language.
You can, of course, write your own derive macros, and apply several derive macros to a single struct.
I wrote some to derive SQLite schemas and migrations and queries and auto-generate frontend TypeScript RPC code. So my source of truth is the Rust struct, and that sort of magically generates everything else.
I don’t know if this is a good idea, but it’s been pretty fun so far. :-)
There are also derive-macro-powered crates to do GraphQL, other flavors of SQL, WASM bindings, etc etc.