prost-reflect-validate
A protobuf library extending prost and prost-reflect with validation support.
This is a rust implementation of protoc-gen-validate.
It uses the prost-reflect crate to implement validation through reflection.
For a derive based implementation see the prost-validate crate.
Usage
It must be used with prost and prost-reflect generated code.
All validation rules are documented in the proto file or in the protoc-gen-validate documentation.
Proto definition
proto/message.proto:
syntax = "proto3";
package validate.example;
import "validate/validate.proto";
message ExampleMessage {
string content = 1 [(validate.rules).string = {const: "Hello, world!"}];
}
Build script
build.rs:
Validation
It exposes a single extension trait ValidatorExt which can be used to validate protobuf reflect messages.
src/main.rs:
use ExampleMessage;
use ValidatorExt;
match default.validate
let msg = ExampleMessage ;
match msg.validate
Output
Validation failed: "validate.example.ExampleMessage.content": must be equal to "Hello, world!"
Validation passed
Minimum Supported Rust Version
Rust 1.74 or higher.
The minimum supported Rust version may be changed in the future, but it will be done with a minor version bump.