parent
00e482c3a1
commit
de7314f305
3 changed files with 10 additions and 4 deletions
|
@ -42,6 +42,7 @@ pub struct Struct {
|
||||||
#[validate(required)]
|
#[validate(required)]
|
||||||
required_option: Option<bool>,
|
required_option: Option<bool>,
|
||||||
#[validate(required)]
|
#[validate(required)]
|
||||||
|
#[validate]
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
required_flattened: Option<Inner>,
|
required_flattened: Option<Inner>,
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,7 @@ impl Attrs {
|
||||||
|
|
||||||
for meta_item in attrs
|
for meta_item in attrs
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|attr| get_meta_items(attr, attr_type, errors))
|
.flat_map(|attr| get_meta_items(attr, attr_type, errors, ignore_errors))
|
||||||
.flatten()
|
.flatten()
|
||||||
{
|
{
|
||||||
match &meta_item {
|
match &meta_item {
|
||||||
|
@ -201,6 +201,7 @@ fn get_meta_items(
|
||||||
attr: &syn::Attribute,
|
attr: &syn::Attribute,
|
||||||
attr_type: &'static str,
|
attr_type: &'static str,
|
||||||
errors: &Ctxt,
|
errors: &Ctxt,
|
||||||
|
ignore_errors: bool,
|
||||||
) -> Result<Vec<syn::NestedMeta>, ()> {
|
) -> Result<Vec<syn::NestedMeta>, ()> {
|
||||||
if !attr.path.is_ident(attr_type) {
|
if !attr.path.is_ident(attr_type) {
|
||||||
return Ok(Vec::new());
|
return Ok(Vec::new());
|
||||||
|
@ -209,11 +210,15 @@ fn get_meta_items(
|
||||||
match attr.parse_meta() {
|
match attr.parse_meta() {
|
||||||
Ok(List(meta)) => Ok(meta.nested.into_iter().collect()),
|
Ok(List(meta)) => Ok(meta.nested.into_iter().collect()),
|
||||||
Ok(other) => {
|
Ok(other) => {
|
||||||
errors.error_spanned_by(other, format!("expected #[{}(...)]", attr_type));
|
if !ignore_errors {
|
||||||
|
errors.error_spanned_by(other, format!("expected #[{}(...)]", attr_type))
|
||||||
|
}
|
||||||
Err(())
|
Err(())
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
errors.error_spanned_by(attr, err);
|
if !ignore_errors {
|
||||||
|
errors.error_spanned_by(attr, err)
|
||||||
|
}
|
||||||
Err(())
|
Err(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ impl ValidationAttrs {
|
||||||
|
|
||||||
for meta_item in attrs
|
for meta_item in attrs
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|attr| get_meta_items(attr, attr_type, errors))
|
.flat_map(|attr| get_meta_items(attr, attr_type, errors, ignore_errors))
|
||||||
.flatten()
|
.flatten()
|
||||||
{
|
{
|
||||||
match &meta_item {
|
match &meta_item {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue