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