diff --git a/src/ty.rs b/src/ty.rs index 1e5b51f3df..b2e086becf 100644 --- a/src/ty.rs +++ b/src/ty.rs @@ -784,9 +784,27 @@ pub mod parsing { impl Parse for TypeTuple { fn parse(input: ParseStream) -> Result { let content; + let paren_token = parenthesized!(content in input); + + if content.is_empty() { + return Ok(TypeTuple { + paren_token, + elems: Punctuated::new(), + }); + } + + let first: Type = content.parse()?; Ok(TypeTuple { - paren_token: parenthesized!(content in input), - elems: content.parse_terminated(Type::parse)?, + paren_token, + elems: { + let mut elems = Punctuated::new(); + elems.push_value(first); + elems.push_punct(content.parse()?); + let rest: Punctuated = + content.parse_terminated(Parse::parse)?; + elems.extend(rest); + elems + }, }) } }