macro_rules! derive_less {
{
$(#[$smeta:meta])* $($svis:ident)? struct ... { $(#[$fmeta:meta])* $($fvis:ident)? ... }
$(#[$emeta:meta])* $($evis:ident)? enum ... { $(#[$vmeta:meta])* ... }
$($rest:tt)*
} => { ... };
{
$(#[$emeta:meta])* $($evis:ident)? enum ... { $(#[$vmeta:meta])* ... }
$(#[$smeta:meta])* $($svis:ident)? struct ... { $(#[$fmeta:meta])* $($fvis:ident)? ... }
$($rest:tt)*
} => { ... };
{
$(#[$smeta:meta])* $($svis:ident)? struct ... { $(#[$fmeta:meta])* $($fvis:ident)? ... }
$($rest:tt)*
} => { ... };
{
$(#[$emeta:meta])* $($evis:ident)? enum ... { $(#[$vmeta:meta])* ... }
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ($($fvis:ident)?)
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
$(#[$current_smeta:meta])*
struct
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ($($fvis:ident)?)
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
($first:meta $($apply:meta)*)
$(#[$current_smeta:meta])*
struct $sname:ident $(< $($generic:tt),+ $(,)? >)? {
$(
$(#[$current_fmeta:meta])*
$fname:ident : $fty:ty
),+ $(,)?
}
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ( $fvis:ident )
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
()
$(#[$current_smeta:meta])*
struct $sname:ident $(< $($generic:tt),+ $(,)? >)? {
$(
$(#[$current_fmeta:meta])*
$fname:ident : $fty:ty
),+ $(,)?
}
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ( )
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
()
$(#[$current_smeta:meta])*
struct $sname:ident $(< $($generic:tt),+ $(,)? >)? {
$(
$(#[$current_fmeta:meta])*
$fname:ident : $fty:ty
),+ $(,)?
}
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ($($fvis:ident)?)
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
($first:meta $($apply:meta)*)
$(#[$current_smeta:meta])*
struct $sname:ident $(< $($generic:tt),+ $(,)? >)? $((
$(
$(#[$current_fmeta:meta])*
$fty:ty
),+ $(,)?
))?;
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ( $fvis:ident )
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
()
$(#[$current_smeta:meta])*
struct $sname:ident $(< $($generic:tt),+ $(,)? >)? $((
$(
$(#[$current_fmeta:meta])*
$fty:ty
),+ $(,)?
))?;
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ( )
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
()
$(#[$current_smeta:meta])*
struct $sname:ident $(< $($generic:tt),+ $(,)? >)? $((
$(
$(#[$current_fmeta:meta])*
$fty:ty
),+ $(,)?
))?;
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ($($fvis:ident)?)
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
$(#[$current_emeta:meta])*
enum
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ($($fvis:ident)?)
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
($first:meta $($apply:meta)*)
$(#[$current_emeta:meta])*
enum $ename:ident $(< $($generic:tt),+ $(,)? >)? {
$(
$(#[$current_vmeta:meta])*
$vname:ident
$(( $($vty:ty),+ $(,)? ))?
$({ $($fname:ident : $fty:ty),+ $(,)? })?
),+ $(,)?
}
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ($($fvis:ident)?)
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
()
$(#[$current_emeta:meta])*
enum $ename:ident $(< $($generic:tt),+ $(,)? >)? {
$(
$(#[$current_vmeta:meta])*
$vname:ident
$(( $($vty:ty),+ $(,)? ))?
$({ $($fname:ident : $fty:ty),+ $(,)? })?
),+ $(,)?
}
$($rest:tt)*
} => { ... };
{
($($smeta:meta)*) ($($svis:ident)?)
($($fmeta:meta)*) ($($fvis:ident)?)
($($emeta:meta)*) ($($evis:ident)?)
($($vmeta:meta)*)
} => { ... };
}