diff --git a/benzina-derive/src/join/mod.rs b/benzina-derive/src/join/mod.rs index b5b9d00..bcc8daf 100644 --- a/benzina-derive/src/join/mod.rs +++ b/benzina-derive/src/join/mod.rs @@ -19,7 +19,7 @@ pub(crate) struct Join { } pub(super) enum NestedOrNot { - Nested(Punctuated), + Nested(Transformation), Not(NoTransformation), } @@ -76,17 +76,14 @@ impl ToTokens for Join { impl NestedOrNot { fn map_type_values(&self) -> Vec { match self { - Self::Nested(nested) => nested.iter().map(Transformation::map_type).collect(), + Self::Nested(nested) => vec![nested.map_type()], Self::Not(not) => not.map_type_values(), } } fn accumulator(&self, accumulator_index: usize) -> TokenStream { match self { - Self::Nested(nested) => nested - .iter() - .flat_map(|item| item.accumulator(Some(accumulator_index))) - .collect(), + Self::Nested(nested) => nested.accumulator(Some(accumulator_index)), Self::Not(not) => not.accumulator(accumulator_index), } } @@ -102,10 +99,7 @@ impl NestedOrNot { fn presenter(&self, accumulator: &TokenStream) -> TokenStream { match self { - Self::Nested(nested) => nested - .iter() - .flat_map(|item| item.presenter(accumulator)) - .collect::(), + Self::Nested(nested) => nested.presenter(accumulator), Self::Not(not) => not.presenter(accumulator), } } diff --git a/benzina-derive/src/join/parse.rs b/benzina-derive/src/join/parse.rs index 0a466b1..faf6bf4 100644 --- a/benzina-derive/src/join/parse.rs +++ b/benzina-derive/src/join/parse.rs @@ -27,8 +27,7 @@ impl Parse for NestedOrNot { let _ = input.parse::()?; Ok(Self::Not(not)) } else { - let conversions = Punctuated::parse_terminated(input)?; - Ok(Self::Nested(conversions)) + Ok(Self::Nested(input.parse::()?)) } } }