Add #[schemars(inner(...)] attribute to specify schema for array items (#234)

This commit is contained in:
Jakub Jirutka 2023-09-09 14:35:53 +02:00 committed by GitHub
parent 30e513ac14
commit a5e51b22b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 231 additions and 60 deletions

View file

@ -276,6 +276,20 @@ Set the Rust built-in [`deprecated`](https://doc.rust-lang.org/edition-guide/rus
Set the path to the schemars crate instance the generated code should depend on. This is mostly useful for other crates that depend on schemars in their macros.
<h3 id="inner">
`#[schemars(inner(...))]`
</h3>
Sets properties specified by [validator attributes](#supported-validator-attributes) on items of an array schema. For example:
```rs
struct Struct {
#[schemars(inner(url, regex(pattern = "^https://")))]
urls: Vec<String>,
}
```
<h3 id="doc">
Doc Comments (`#[doc = "..."]`)

View file

@ -10,6 +10,8 @@ pub struct MyStruct {
pub my_bool: bool,
#[schemars(default)]
pub my_nullable_enum: Option<MyEnum>,
#[schemars(inner(regex(pattern = "^x$")))]
pub my_vec_str: Vec<String>,
}
#[derive(Deserialize, Serialize, JsonSchema)]

View file

@ -4,7 +4,8 @@
"type": "object",
"required": [
"myBool",
"myNumber"
"myNumber",
"myVecStr"
],
"properties": {
"myBool": {
@ -26,6 +27,13 @@
"format": "int32",
"maximum": 10.0,
"minimum": 1.0
},
"myVecStr": {
"type": "array",
"items": {
"type": "string",
"pattern": "^x$"
}
}
},
"additionalProperties": false,