From c39923d220fd2f38b8bfe1c92b57aea49dc2ec32 Mon Sep 17 00:00:00 2001 From: dpytaylo Date: Fri, 5 Jan 2024 22:04:36 +0200 Subject: [PATCH] Refactor `check()` function --- garde_derive/src/check_deprecated.rs | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/garde_derive/src/check_deprecated.rs b/garde_derive/src/check_deprecated.rs index 2738621..4a26a74 100644 --- a/garde_derive/src/check_deprecated.rs +++ b/garde_derive/src/check_deprecated.rs @@ -16,12 +16,12 @@ pub fn check(input: &model::Input) -> DeprecatedWarningSpans { let mut spans = Vec::new(); match kind { model::InputKind::Struct(variant) => { - spans.append(&mut check_variant(variant)); + check_variant(variant, &mut spans); } model::InputKind::Enum(list) => { for (_, variant) in list { if let Some(variant) = variant { - spans.append(&mut check_variant(variant)); + check_variant(variant, &mut spans); } } } @@ -33,38 +33,31 @@ pub fn check(input: &model::Input) -> DeprecatedWarningSpans { } } -fn check_variant(variant: &model::Variant) -> Vec { - let mut spans = Vec::new(); - +fn check_variant(variant: &model::Variant, spans: &mut Vec) { match variant { model::Variant::Struct(map) => { for field in map.values() { - spans.append(&mut check_field(field)); + check_field(field, spans); } } model::Variant::Tuple(list) => { for field in list { - spans.append(&mut check_field(field)); + check_field(field, spans); } } - }; - - spans + } } -fn check_field(field: &model::Field) -> Vec { +fn check_field(field: &model::Field, spans: &mut Vec) { let model::Field { rules: raw_rules, .. } = field; - let mut spans = Vec::new(); for RawRule { span, kind } in raw_rules { if let model::RawRuleKind::ByteLength(_) = kind { spans.push(*span); } } - - spans } impl ToTokens for DeprecatedWarningSpans {