macro_rules! impl_as {
(@func $target_id_name:ident, $alias_name:ident) => { ... };
(@func $target_id_name:ident) => { ... };
($src_id_name:ident $(,$target_id_name:ident)* $(,{$orig_target_id_name:ident , $alias_name:ident})*) => { ... };
}