Making generic constraints in macros optional and added visibility parameter
This commit is contained in:
parent
87bf378b69
commit
9720309976
@ -1,35 +1,36 @@
|
|||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! builder_trait_decl {
|
macro_rules! builder_trait_decl {
|
||||||
(
|
(
|
||||||
$name:ident
|
$scope:vis $name:ident
|
||||||
$(<
|
$(<
|
||||||
$generic0Name:ident : $generic0Bound:path $(, $genericNName:ident : $genericNBound:path)*
|
$generic0Name:ident $(: $generic0Bound:path)? $(, $genericNName:ident $(: $genericNBound:path)?)*
|
||||||
>)?
|
>)?
|
||||||
$(: $base0:path $(, $baseN:path)*)?
|
$(: $base0:path $(, $baseN:path)*)?
|
||||||
{ $($body:tt)* }
|
{ $($body:tt)* }
|
||||||
) => {
|
) => {
|
||||||
trait $name
|
$scope trait $name
|
||||||
<
|
<
|
||||||
'source, 'pos, 'builder, C, P:Pos<'pos>, CS:CollectedSubstring<'source, C>
|
'source, 'pos, 'builder, C, P:Pos<'pos>, CS:CollectedSubstring<'source, C>
|
||||||
$(, $generic0Name : $generic0Bound $(, $genericNName : $genericNBound)* )?
|
$(, $generic0Name $(: $generic0Bound)? $(, $genericNName $(: $genericNBound)?)* )?
|
||||||
>
|
>
|
||||||
$(: $base0 $(, $baseN)*)?
|
$(: $base0 $(, $baseN)*)?
|
||||||
{ $($body)* }
|
{ $($body)* }
|
||||||
};
|
};
|
||||||
|
|
||||||
(
|
(
|
||||||
$name:ident
|
$scope:vis $name:ident
|
||||||
<
|
<
|
||||||
$lifetime0Name:lifetime $(, $lifetimeNName:lifetime)*
|
$lifetime0Name:lifetime $(, $lifetimeNName:lifetime)*
|
||||||
$(, $genericNName:ident : $genericNBound:path)*
|
$(, $genericNName:ident $(: $genericNBound:path)?)*
|
||||||
>
|
>
|
||||||
$(: $base0:path $(, $baseN:path)*)?
|
$(: $base0:path $(, $baseN:path)*)?
|
||||||
{ $($body:tt)* }
|
{ $($body:tt)* }
|
||||||
) => {
|
) => {
|
||||||
fn $name
|
$scope trait $name
|
||||||
<
|
<
|
||||||
'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*,
|
'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*,
|
||||||
C, P: Pos<'pos>, CS: CollectedSubstring<'source, C>
|
C, P: Pos<'pos>, CS: CollectedSubstring<'source, C>
|
||||||
$(, $genericNName : $genericNBound)*
|
$(, $genericNName $(: $genericNBound)?)*
|
||||||
>
|
>
|
||||||
$(: $base0 $(, $baseN)*)?
|
$(: $base0 $(, $baseN)*)?
|
||||||
{ $($body)* }
|
{ $($body)* }
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
mod builder_type_t;
|
mod builder_type_t;
|
||||||
mod parser_func;
|
mod parser_func_decl;
|
||||||
mod builder_trait_decl;
|
mod builder_trait_decl;
|
||||||
@ -1,77 +1,83 @@
|
|||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! parser_func {
|
macro_rules! parser_func_decl {
|
||||||
|
// only type generics | default src type -------------------------------------------------------
|
||||||
(
|
(
|
||||||
$name:ident
|
$scope:vis $name:ident
|
||||||
$(<
|
$(<
|
||||||
$generic0Name:ident : $generic0Bound:path $(, $genericNName:ident : $genericNBound:path)*
|
$generic0Name:ident $(: $generic0Bound:path)? $(, $genericNName:ident $(: $genericNBound:path)?)*
|
||||||
>)?
|
>)?
|
||||||
($srcName:ident : $srcType:ty $(, $argNName:ident : $argNType:ty)*)
|
($srcName:ident : $srcType:ty $(, $argNName:ident : $argNType:ty)*)
|
||||||
$(-> $ret:ty)?
|
$(-> $ret:ty)?
|
||||||
$body:block
|
$body:block
|
||||||
) => {
|
) => {
|
||||||
fn $name
|
$scope fn $name
|
||||||
<
|
<
|
||||||
'source, 'pos, 'builder, C, P:Pos<'pos>, CS:CollectedSubstring<'source, C>
|
'source, 'pos, 'builder, C, P:Pos<'pos>, CS:CollectedSubstring<'source, C>
|
||||||
$(, $generic0Name : $generic0Bound $(, $genericNName : $genericNBound)* )?
|
$(, $generic0Name $(: $generic0Bound)? $(, $genericNName $(: $genericNBound)?)* )?
|
||||||
>
|
>
|
||||||
($srcName: $srcType $(, $argNName : $argNType)*)
|
($srcName: $srcType $(, $argNName : $argNType)*)
|
||||||
$(-> $ret)?
|
$(-> $ret)?
|
||||||
$body
|
$body
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// lifetime + type generics | default src type --------------------------------------------------
|
||||||
(
|
(
|
||||||
$name:ident
|
$scope:vis $name:ident
|
||||||
<
|
<
|
||||||
$lifetime0Name:lifetime $(, $lifetimeNName:lifetime)*
|
$lifetime0Name:lifetime $(, $lifetimeNName:lifetime)*
|
||||||
$(, $genericNName:ident : $genericNBound:path)*
|
$(, $genericNName:ident $(: $genericNBound:path)?)*
|
||||||
>
|
>
|
||||||
($srcName:ident : $srcType:ty $(, $argNName:ident : $argNType:ty)*)
|
($srcName:ident : $srcType:ty $(, $argNName:ident : $argNType:ty)*)
|
||||||
$(-> $ret:ty)?
|
$(-> $ret:ty)?
|
||||||
$body:block
|
$body:block
|
||||||
) => {
|
) => {
|
||||||
fn $name
|
$scope fn $name
|
||||||
<
|
<
|
||||||
'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*,
|
'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*,
|
||||||
C, P: Pos<'pos>, CS: CollectedSubstring<'source, C>
|
C, P: Pos<'pos>, CS: CollectedSubstring<'source, C>
|
||||||
$(, $genericNName : $genericNBound)*
|
$(, $genericNName $(: $genericNBound)?)*
|
||||||
>
|
>
|
||||||
($srcName: $srcType $(, $argNName : $argNType)*)
|
($srcName: $srcType $(, $argNName : $argNType)*)
|
||||||
$(-> $ret)?
|
$(-> $ret)?
|
||||||
$body
|
$body
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// only type generics | custom src type --------------------------------------------------------
|
||||||
(
|
(
|
||||||
$name:ident
|
$scope:vis $name:ident
|
||||||
$(<
|
$(<
|
||||||
$generic0Name:ident : $generic0Bound:path $(, $genericNName:ident : $genericNBound:path)*
|
$generic0Name:ident $(: $generic0Bound:path)? $(, $genericNName:ident $(: $genericNBound:path)?)*
|
||||||
>)?
|
>)?
|
||||||
($srcName:ident $(, $argNName:ident : $argNType:ty)*)
|
($srcName:ident $(, $argNName:ident : $argNType:ty)*)
|
||||||
$(-> $ret:ty)?
|
$(-> $ret:ty)?
|
||||||
$body:block
|
$body:block
|
||||||
) => {
|
) => {
|
||||||
fn $name
|
$scope fn $name
|
||||||
<
|
<
|
||||||
'source, 'pos, 'builder, C, P:Pos<'pos>, CS:CollectedSubstring<'source, C>
|
'source, 'pos, 'builder, C, P:Pos<'pos>, CS:CollectedSubstring<'source, C>
|
||||||
$(, $generic0Name : $generic0Bound $(, $genericNName : $genericNBound)* )?
|
$(, $generic0Name $(: $generic0Bound)? $(, $genericNName $(: $genericNBound)?)* )?
|
||||||
>
|
>
|
||||||
($srcName: &'source mut impl SourceStream<'source, 'pos, C, P, CS> $(, $argNName : $argNType)*)
|
($srcName: &'source mut impl SourceStream<'source, 'pos, C, P, CS> $(, $argNName : $argNType)*)
|
||||||
$(-> $ret)?
|
$(-> $ret)?
|
||||||
$body
|
$body
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// lifetime + type generics | custom src type --------------------------------------------------
|
||||||
(
|
(
|
||||||
$name:ident
|
$scope:vis $name:ident
|
||||||
<
|
<
|
||||||
$lifetime0Name:lifetime $(, $lifetimeNName:lifetime)*
|
$lifetime0Name:lifetime $(, $lifetimeNName:lifetime)*
|
||||||
$(, $genericNName:ident : $genericNBound:path)*
|
$(, $genericNName:ident $(: $genericNBound:path)?)*
|
||||||
>
|
>
|
||||||
($srcName:ident $(, $argNName:ident : $argNType:ty)*)
|
($srcName:ident $(, $argNName:ident : $argNType:ty)*)
|
||||||
$(-> $ret:ty)?
|
$(-> $ret:ty)?
|
||||||
$body:block
|
$body:block
|
||||||
) => {
|
) => {
|
||||||
fn $name
|
$scope fn $name
|
||||||
<
|
<
|
||||||
'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*,
|
'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*,
|
||||||
C, P: Pos<'pos>, CS: CollectedSubstring<'source, C>
|
C, P: Pos<'pos>, CS: CollectedSubstring<'source, C>
|
||||||
$(, $genericNName : $genericNBound)*
|
$(, $genericNName $(: $genericNBound)?)*
|
||||||
>
|
>
|
||||||
($srcName: &'source mut impl SourceStream<'source, 'pos, C, P, CS> $(, $argNName : $argNType)*)
|
($srcName: &'source mut impl SourceStream<'source, 'pos, C, P, CS> $(, $argNName : $argNType)*)
|
||||||
$(-> $ret)?
|
$(-> $ret)?
|
||||||
Loading…
Reference in New Issue
Block a user