Aynı sandık içindeki makrolar
#[macro_use]
mod foo {
macro_rules! bar {
() => ()
}
}
bar!();
Makroyu aynı kasada kullanmak istiyorsanız, makronuzun tanımlandığı modülün niteliğe ihtiyacı vardır #[macro_use]
.
Makrolar yalnızca tanımlandıktan sonra kullanılabilir . Bu, bunun çalışmadığı anlamına gelir:
bar!();
#[macro_use]
mod foo {
macro_rules! bar {
() => ()
}
}
Kasalar arasında makrolar
macro_rules!
Makronuzu diğer kasalardan kullanmak için , makronun kendisinin özniteliğe ihtiyacı vardır #[macro_export]
. İçe aktarma kasası daha sonra makroyu aracılığıyla içe aktarabilir use crate_name::macro_name;
.
Sandık util
#[macro_export]
macro_rules! foo {
() => ()
}
Sandık user
use util::foo;
foo!();
Makroların her zaman bir kasanın en üst seviyesinde bulunduğunu unutmayın; Hatta eğer öyleyse foo
bir iç olacağını mod bar {}
, user
sandık hala yazma olurdu use util::foo;
ve değil use util::bar::foo;
.
Rust 2018 önce, özellik ekleyerek diğer sandıklardan ithalat makro zorunda #[macro_use]
için extern crate util;
açıklamada. Bu, tüm makroları util
. Alternatif olarak, #[macro_use(cat, dog)]
yalnızca makroları içe aktarmak için kullanılabilir cat
ve dog
. Bu sözdizimi artık gerekli olmamalı.
Daha fazla bilgi, makrolarla ilgili Rust Programlama Dili bölümünde mevcuttur .
module::my_macro!()?