I'm also looking for a similar solution. I wish to be able to use Protobuf to glue components of cross platform product together. Currently, the product is composed of 4 projects: Android (Kotlin), Windows (.net), IOS (Swift), MacOS (Swift). There are 4 separate teams working on each project. Communication is really difficult between the projects when trying to implement something in a unified way.
There have been many attempts made, but they all failed due to difficulty of interfacing between each app and the library. This is where we want to turn to something like Protobuf to allow us to write some of the code in a cross platform library, using Rust or C++.
The final vision would be to have all the interfaces between apps and libraries be written in Protobuf. Messages would be used to define the structures for each library function. Services would be used to define the available functions of the library.
gRPC, in its current state, is not very desirable. It requires a client and a server. Hosting a server on the client would be a waste. Nobody wants to deal with network stack when trying to interface with a local library.
My outlook is that gRPC should allow anyone to implement their own transport layer. Basically, gRPC should serialize the service method calls, with the arguments, into a buffer, just like messages are serialized. Then, the app should be able to implement whatever transport they want for the buffer. Be it over network, or just sending it from C++ to C#. Finally, on the other end, gRPC should be able to read the serialized function call stream, decode it and dispatch appropriate service methods.
After doing some investigation, I found the "option java_generic_services = true;". As my heart filled with joy, I fired up protoc compiler and attempted to see what code would be generated. To my dismay, I didn't see a serialized service method call buffer, but rather interfaces that would require me to do all the serialization / deserialization myself.
I really hope there is a project hidden somewhere that is attempting to do what I describe here. I would be happy to contribute, as it would solve a lot of problems for me.