protify 0.1.4

A Rust-first protobuf framework to generate packages from rust code, with validation included
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
# Limitations

- Usage of protobuf `bytes` fields implies usage of the [`Bytes`]::bytes::Bytes type in Rust, rather than `Vec<u8>`. Supporting both would increase the complexity of the macros and create more trait indirection for the bytes validator. Since [`Bytes`]::bytes::Bytes is a tiny, widely used and very convenient dependency to have, I've decided to target that directly.

- Usage of `Box` in a oneof or message is automatically implied as a sign of **recursion** and handled accordingly in the macros' logic. Using `Box` for non-recursive fields or variants is not supported. Furthermore, it's expected that if there is a recursive relationship between a message and a oneof, that the `Box` will be used in the oneof variant, and not on the oneof field on the parent message.

 - Using `Self` for a recursive field is very likely to break some of the macro output. For this reason it's advised to use the full struct name instead.

- The schema features are not heavily optimized for runtime usage, and they are intended to be used merely for generating files, not as a substitute for a full-fledged reflection library. I can recommend the excellent [`prost-reflect`]https://crates.io/crates/prost-reflect for that purpose.

- Proxy structs/enums do not support generics or lifetimes.

Refer to the [roadmap](crate::guide::roadmap) to learn more about planned and unplanned features.