macro_rules! pub_struct {
($name:ident {$($field:ident: $t:ty,)*}) => {
#[derive(Debug, Clone, PartialEq)] // ewww
pub struct $name {
$(pub $field: $t),*
}
}
}
К сожалению, derive
может применяться только к структурам, перечислениям и объединениям, поэтому я не знаю, как поднять их для вызывающего абонента.
Использование:
pub_struct!(Foo {
a: i32,
b: f64,
});
Было бы неплохо, если бы мне не понадобились скобки и точка с запятой, т. Е. Если бы Rust поддерживал макросы читателей.