[rust-server] Validate model-valued wrapper fields
Fixes #25261.
Generated model-valued wrappers derive Validate without marking their inner field for nested validation. A root validation call can therefore miss invalid children. Add nested validation to array, map, and reference wrappers, and keep it on object fields that also have bounds.
Model-only union wrappers delegate to the wrapped type's existing Validate implementation. Primitive and mixed union wrappers keep their current behavior. Wrapped types remain responsible for their own validation.
Array values use min_items and max_items instead of string-length annotations. Nullable array fields keep their existing bound annotations for compatibility with the released runtime. This change does not add nullable collection-size support or change dependency versions.
Validation for 23b7f992:
- CLI build and all 56 Rust generator Java tests pass with
./mvnw -q -pl modules/openapi-generator-cli -am package -Dtest='org.openapitools.codegen.rust.*Test' -Dsurefire.failIfNoSpecifiedTests=false -Dmaven.javadoc.skip=true. - All eight Rust server samples regenerated with
./bin/generate-samples.sh bin/configs/rust-server*.yaml. - All seven committed Rust tests pass against the generated dependency declarations, using crates.io Swagger 7.0.1 and serde_valid 2.0.4. They check wrapper recursion, collection bounds, bounded fields, nullable-array compatibility, and model/primitive union compilation.
recursive-validation.rsincludes the steps to run them; Maven checks generated source but does not execute these Rust tests. - The generated fixture passes
cargo check --no-default-features --features client,server,validate --lib. - The full suite for other generator languages was not run locally.