Gibt es eine Möglichkeit,„Re-Export“#[macro_use] extern crate
ähnlich wie pub use
, so dass Benutzer eines Makros Makros müssen nicht manuell diese abhängigen extern crate
s hinzufügen?anderen Makro in einem macro_rules Verwendung ohne `extern crate` in Rost zu erfordern
Der Rest der Frage ist ein Beispiel zur Veranschaulichung.
In src/lib.rs
, beachten Sie, dass das id
Makro das lazy_static
Makro verwendet:
#[macro_export]
macro_rules! id {
() => {
lazy_static! {
static ref NUMBER : std::sync::atomic::AtomicUsize =
std::sync::atomic::AtomicUsize::new(0);
}
return NUMBER.fetch_add(1, std::sync::atomic::Ordering::SeqCst);
}
}
In examples/example.rs
, brauchen wir eine extern crate
Zeile für jedes Makro, obwohl wir nur die id
Makro direkt mit:
#[macro_use]
extern crate id_macro;
#[macro_use]
extern crate lazy_static;
fn new_id() -> usize {
id!();
}
fn main() {
println!("id {}", new_id()); // prints "id 0"
println!("id {}", new_id()); // prints "id 1"
}
im Beispiel wäre es toll, wenn der Benutzer von id_macro
id!
ohne zu wissen, über 01 verwenden könnte. Gibt es eine Möglichkeit, extern crate
ähnlich pub use
"re-export" zu machen, um die folgenden Zeilen von dem Beispiel weg zu gehen?
#[macro_use]
extern crate lazy_static;
Dank @Kornel. Wenn jemand über diese kommt, für 'lazy_static', was ich brauchte, speziell war: ' '' # [Feature (macro_reexport)] # [macro_reexport (lazy_static, __lazy_static_internal, __lazy_static_create)] extern Kiste lazy_static; '' ' Ganz der Bissen! Und natürlich nur noch nachts. –