From 8388ea0657bcb1a90d2a8b6895e48f7d527eab48 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Sun, 23 Nov 2025 21:02:29 +0300 Subject: [PATCH] Improvements in macros --- src/macros/builder_type_t.rs | 72 ++++++++++++++++++++++++++++++++---- src/macros/parser_fn_decl.rs | 4 +- 2 files changed, 66 insertions(+), 10 deletions(-) diff --git a/src/macros/builder_type_t.rs b/src/macros/builder_type_t.rs index b3860df..1136a71 100644 --- a/src/macros/builder_type_t.rs +++ b/src/macros/builder_type_t.rs @@ -1,13 +1,13 @@ #[macro_export] macro_rules! builder_type_t { ( - $name:ident + $name:ident $(< $generic0Name:ty $(, $genericNName:ty)* $(,)? >)? ) => { - $name + $name $(:: $path)* < 'source, 'pos, P, CS $(, $generic0Name $(, $genericNName)*)? @@ -15,13 +15,13 @@ macro_rules! builder_type_t { }; ( - $name:ident + $name:ident $(:: $path:ident)* < $lifetime0Name:lifetime $(, $lifetimeNName:lifetime)* $(, $genericNName:ty)* $(,)? > ) => { - $name + $($path ::)* $name $(:: $path)* < 'source, 'pos, $lifetime0Name $(, $lifetimeNName)*, P, CS $(, $genericNName)* @@ -29,13 +29,13 @@ macro_rules! builder_type_t { }; ( - impl $name:ident + impl $name:ident $(:: $path:ident)* $(< $generic0Name:ty $(, $genericNName:ty)* $(,)? >)? ) => { - impl $name + impl $name $(:: $path)* < 'source, 'pos, P, CS $(, $generic0Name $(, $genericNName)*)? @@ -43,13 +43,69 @@ macro_rules! builder_type_t { }; ( - impl $name:ident + impl $name:ident $(:: $path:ident)* < $lifetime0Name:lifetime $(, $lifetimeNName:lifetime)* $(, $genericNName:ty)* $(,)? > ) => { - impl $name + impl $name $(:: $path)* + < + 'source, 'pos, $lifetime0Name $(, $lifetimeNName)*, + P, CS $(, $genericNName)* + > + }; + + ( + &impl $name:ident $(:: $path:ident)* + $(< + $generic0Name:ty $(, $genericNName:ty)* $(,)? + >)? + + ) => { + &impl $name $(:: $path)* + < + 'source, 'pos, P, CS + $(, $generic0Name $(, $genericNName)*)? + > + + }; + ( + &impl $name:ident $(:: $path:ident)* + < + $lifetime0Name:lifetime $(, $lifetimeNName:lifetime)* + $(, $genericNName:ty)* $(,)? + > + ) => { + &impl $name $(:: $path)* + < + 'source, 'pos, $lifetime0Name $(, $lifetimeNName)*, + P, CS $(, $genericNName)* + > + }; + + ( + &mut impl $name:ident $(:: $path:ident)* + $(< + $generic0Name:ty $(, $genericNName:ty)* $(,)? + >)? + + ) => { + &mut impl $name $(:: $path)* + < + 'source, 'pos, P, CS + $(, $generic0Name $(, $genericNName)*)? + > + + }; + ( + &mut impl $name:ident $(:: $path:ident)* + < + $lifetime0Name:lifetime $(, $lifetimeNName:lifetime)* + $(, $genericNName:ty)* $(,)? + > + ) => { + &mut impl $name $(:: $path)* < 'source, 'pos, $lifetime0Name $(, $lifetimeNName)*, P, CS $(, $genericNName)* diff --git a/src/macros/parser_fn_decl.rs b/src/macros/parser_fn_decl.rs index 3d5d6ed..438d1bf 100644 --- a/src/macros/parser_fn_decl.rs +++ b/src/macros/parser_fn_decl.rs @@ -89,7 +89,7 @@ macro_rules! parser_fn_decl { $(, $genericName $(: $genericBound)?)* > ( - $srcName: &'source mut impl SourceStream<'source, 'pos, C=C, P=P, CS=CS> + $srcName: &mut impl SourceStream<'source, 'pos, C=C, P=P, CS=CS> $(, $argName : $argType)* ) $(-> $ret)? @@ -121,7 +121,7 @@ macro_rules! parser_fn_decl { $(, $genericName $(: $genericBound)?)* > ( - $srcName: &'source mut impl SourceStream<'source, 'pos, C=$charType, P=P, CS=CS> + $srcName: &mut impl SourceStream<'source, 'pos, C=$charType, P=P, CS=CS> $(, $argName : $argType)* ) $(-> $ret)?