มาโครภายในลังเดียวกัน
#[macro_use]
mod foo {
macro_rules! bar {
() => ()
}
}
bar!();
#[macro_use]หากคุณต้องการใช้แมโครในลังเดียวกันโมดูลแมโครของคุณถูกกำหนดไว้ในความต้องการของแอตทริบิวต์
สามารถใช้มาโครได้หลังจากกำหนดไว้แล้วเท่านั้น ซึ่งหมายความว่าสิ่งนี้ใช้ไม่ได้:
bar!();
#[macro_use]
mod foo {
macro_rules! bar {
() => ()
}
}
มาโครข้ามลัง
กับการใช้งานmacro_rules!แมโครจากลังอื่น ๆ #[macro_export]แมโครตัวเองต้องการแอตทริบิวต์ use crate_name::macro_name;ลังการนำเข้านั้นสามารถนำเข้าแมโครผ่าน
ลัง util
#[macro_export]
macro_rules! foo {
() => ()
}
ลัง user
use util::foo;
foo!();
โปรดทราบว่ามาโครจะอยู่ที่ระดับบนสุดของลังเสมอ ดังนั้นแม้ว่าfooจะเป็นภายในmod bar {}ที่userลังจะยังคงต้องมีการเขียนuse util::foo;และการไม่ได้ use util::bar::foo;
ก่อนเกิดสนิม 2018 คุณต้องนำเข้ามาโครจากลังอื่นโดยการเพิ่มแอตทริบิวต์#[macro_use]ในextern crate util;คำสั่ง utilที่จะนำเข้าแมโครทั้งหมดจาก หรือ#[macro_use(cat, dog)]อาจใช้เพื่อนำเข้ามาโครcatและdog. ไวยากรณ์นี้ไม่จำเป็นอีกต่อไป
ข้อมูลเพิ่มเติมสามารถดูได้ในสนิมเขียนโปรแกรมภาษาบทที่เกี่ยวกับมาโคร
module::my_macro!()?