Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
prost-protovalidate
Runtime validation for Protocol Buffer messages using buf.validate rules, built for prost and prost-reflect — with an optional zero-cost generated path via prost-protovalidate-build for schemas that don't need CEL at runtime.
Dynamically inspects prost-reflect message descriptors, compiles buf.validate constraint annotations (including CEL expressions), and evaluates them against concrete message instances. For CEL-free schemas, prost-protovalidate-build emits impl Validate at build time so validation runs through direct field access — no reflection, no CEL interpreter on the hot path.
Quick Start
[]
= "0.14"
= "0.3"
Annotate your .proto files with buf.validate rules:
syntax = "proto3";
import "buf/validate/validate.proto";
message CreateUserRequest {
string name = 1 [(buf.validate.field).string.min_len = 1];
int32 age = 2 [(buf.validate.field).int32.gte = 18];
}
Validate in Rust:
use validate;
let request = CreateUserRequest ;
match validate
For repeated validations, construct a Validator once to cache compiled rules:
use Validator;
let validator = new;
validator.validate?;
Features
- Zero-cost generated validators (no CEL on the hot path) — companion crate
prost-protovalidate-buildemitsimpl Validateat build time for messages with standard-only rules. Noprost-reflecttranscoding, no CEL interpreter, direct field access. Disable thecelfeature to also dropcel,chrono,paste, and transitivethiserror1.x from your dependency tree. Messages that need CEL fall back to the runtimeValidatorautomatically (with acargo:warning=diagnostic, never silently skipped). - Dynamic field inspection via
prost-reflectdescriptors — no static code generation needed for validators. - CEL evaluation — compiles and evaluates Common Expression Language expressions for cross-field and complex constraints.
- Aggregated violations — collects all constraint failures instead of short-circuiting on the first error.
- Evaluation caching —
Validatorcaches compiled AST/CEL rules, avoiding re-parsing on every call.
Compatibility
| prost-protovalidate | prost | prost-reflect | MSRV |
|---|---|---|---|
| 0.3.x | 0.14 | 0.16 | 1.86 |
License
MIT OR Apache-2.0