Generate .proto
code from Rust code.
Currently this project includes two crates that are supposed to be used by users: proto3
and proto3-codegen
.
A Rust struct implements proto3::Proto3
trait so it can be used in codegen.
The PoC includes two other crates that uses them. poc/types
includes several types that implement proto3::Proto3
trait.
poc/types-prost
uses proto3-codegen
in its build script to generate poc/types-prost/src/types_prost.proto
. To make the generated code actually useful, the build script also uses prost-build
to generate Rust code from the .proto
file.
That Rust code is included in poc/types-prost
and conversion functions are implemented between types in poc/types
and their prost::Message
counterparts.
The next step is to automate the proto3::Proto3
implementation and the conversion function implementation, probably using procedural macros.
The end goal looks like this:
In poc/types
:
#[derive(Proto3)]
struct NestedStructExample {
...
}
In poc/types-prost
:
impl_conversion!(NestedStructExample);