Ich habe ein Makro, das eine Liste von Funktionsdeklarationen nimmt und sie in verschiedene Deklarationen umwandelt.Wie generalisiere ich ein Rust-Makro über verschiedene Arten von Funktionen?
macro_rules! re_export {
($(pub fn $i:ident($($arg:ident: $argty:ty)*) -> $ret:ty;)*) => ($(
extern {
pub fn $i($($arg: $argty),*) -> $ret;
}
)*);
($(pub fn $i:ident($($arg:ident: $argty:ty)*);)*) => ($(
extern {
pub fn $i($($arg: $argty),*);
}
)*);
}
, die wie folgt verwendet:
re_export! {
pub fn abs(i: c_int) -> c_int;
pub fn rand() -> c_int;
pub fn foo();
pub fn add(i: c_int, j: c_int) -> c_int;
}
Wie kann ich das Makro verallgemeinern, so dass ich es mehrere Funktionen mit oder ohne args geben kann und Rückgabetypen und haben es auf alle von ihnen zu arbeiten. Es ist einfach, ein Makro zu erstellen, das an mehreren Funktionen des gleichen Typs arbeitet, aber ich kann nicht herausfinden, wie es für verschiedene Typen funktioniert.
ich mit Ihrem Benutzernamen annehmen werde, dass Sie das Buch schrieb, du hast verlinkt. Es ist recht gut! Ich wünschte, Google hätte es mir vorgeschlagen, als ich für diese Frage recherchierte. – Mastax