Wenn wir die Anwendung von #[derive(...)]
auf eine Struktur verallgemeinern wollen, wäre es in einigen Fällen nützlich, dies in ein Makro zu schreiben.Ist es möglich, eine Strukturdeklaration in einem Makro zu verschachteln, um Strukturattribute anzuwenden?
Nicht-Arbeits Beispiel:
my_traits!(
pub struct MyType(u32),
MyType
);
Wo my_traits
das erste Argument mit #[derive(...)]
Präfix könnte, und verwenden Sie das zweite Argument impl SomeTrait for $t {...}
zu erklären.
Deklaration Implementierungen funktioniert ohne Probleme, jedoch habe ich es nicht geschafft, einen Weg zu finden, ein Makro zu verwenden, um die Struktur Deklaration mit Attributen Präfix.
diese Frage finden Sie ein Beispiel dessen, was dies für verwendet werden könnte:
Possible to derive attributes *after* a struct declaration?
Danke, ich könnte am Ende dies tun. Die Hauptnachteile dazu - während das funktioniert, wollte ich die gesamte Deklaration übergeben, sonst Ill müssen separate Makros für 'pub struct $ name (u32);' und 'struct $ name (pub u32);' (öffentliche Struktur und öffentliches Mitglied). – ideasman42