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 foobir iç olacağını mod bar {}, usersandı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 catve dog. Bu sözdizimi artık gerekli olmamalı.
Daha fazla bilgi, makrolarla ilgili Rust Programlama Dili bölümünde mevcuttur .
module::my_macro!()?