macro_rules! impl_generic_builtin_cmd {
(
$(#[$cmd_attr:meta])*
pub struct $Cmd:ident;
$(#[$constructor_attr:meta])*
pub fn $constructor:ident ();
$(#[$spawned_future_attr:meta])*
pub struct $SpawnedFuture:ident;
$(#[$future_attr:meta])*
pub struct $Future:ident;
where T: $($t_bounds:path)+,
) => { ... };
(
$(#[$cmd_attr:meta])*
pub struct $Cmd:ident;
$(#[$constructor_attr:meta])*
pub fn $constructor:ident ();
$(#[$spawned_future_attr:meta])*
pub struct $SpawnedFuture:ident;
$(#[$future_attr:meta])*
pub struct $Future:ident;
where T: $($t_bounds:path)+,
E: $($e_bounds:path),*,
) => { ... };
}