vld-derive
Derive macro for the vld validation library.
Overview
Provides #[derive(Validate)] — a procedural macro that generates validate() and is_valid() methods for your structs based on #[vld(...)] field attributes.
This crate is not meant to be used directly. Enable the derive feature on the vld crate instead:
[]
= { = "0.4", = ["derive"] }
Quick start
use *;
use Validate;
Serde rename support
The macro automatically respects #[serde(rename)] and #[serde(rename_all)] attributes to determine the JSON field names used during validation:
use *;
use Validate;
use Deserialize;
This will expect JSON keys firstName and emailAddress.
OpenAPI / utoipa integration
When the openapi feature is enabled on vld, the derive macro also generates
json_schema() and to_openapi_document() methods. This makes #[derive(Validate)]
fully compatible with impl_to_schema! from vld-utoipa:
[]
= { = "0.4", = ["derive", "openapi"] }
= "0.4"
= "5"
use Validate;
use impl_to_schema;
impl_to_schema!;
// Now UpdateLocationRequest implements utoipa::ToSchema
// with camelCase property names in the OpenAPI spec.
Query / path parameters
Add utoipa's #[into_params(parameter_in = Query)] (or Path, Header, Cookie) on the
struct, then call impl_to_schema! once — same as with vld::schema!:
use Validate;
use impl_to_schema;
impl_to_schema!;
Unlike vld::schema!, the derive macro keeps #[into_params] on the struct (standard
utoipa attribute). utoipa must be in your crate dependencies so the attribute resolves.
For vld::schema!, #[into_params] is consumed and stripped — only the OpenAPI location hint
is preserved via OpenApiParameterIn.
See vld-utoipa migration guide for deprecated macro aliases.
Examples
See the playground example for a complete usage demo, including #[derive(Validate)]:
License
MIT