Rust: تعليقات لتوسعات الماكرو

تم إنشاؤها على ١٩ أكتوبر ٢٠١٦  ·  3تعليقات  ·  مصدر: rust-lang/rust

macro_rules! foo_macro {
    ($name:ident) => {
        pub struct $name;
    }
}

/// Doc comment for Foo struct.
foo_macro!(Foo);

/// Doc comment for Bar struct.
foo_macro!(Bar);

في نموذج التعليمات البرمجية هذا ، يريد المستخدم إنشاء بنية عبر توسيع الماكرو وكتابة تعليق فريد لكل طلب ماكرو مختلف.
هذا يعني تعليقًا فريدًا لـ Struct Foo and Bar وهو أمر غير ممكن حاليًا في مترجم الصدأ عند تمكين:

#![warn(missing_docs)]

مع التحذيرات التالية:

warning: missing documentation for a struct
  --> src/activation_fn.rs:9:3
   |
9  |        pub struct $name;
   |        ^^^^^^^^^^^^^^^^^
...
14 | foo_macro!(Foo);
   | ---------------- in this macro invocation
   |
note: lint level defined here
  --> src/lib.rs:1:9
   |
1  | #![warn(missing_docs)]
   |         ^^^^^^^^^^^^

warning: missing documentation for a struct
  --> src/activation_fn.rs:9:3
   |
9  |        pub struct $name;
   |        ^^^^^^^^^^^^^^^^^
...
17 | foo_macro!(Bar);
   | ---------------- in this macro invocation
   |
note: lint level defined here
  --> src/lib.rs:1:9
   |
1  | #![warn(missing_docs)]
   |         ^^^^^^^^^^^^

بينما من الواضح أن هذا يعمل:

macro_rules! foo_macro {
    /// Unified comment for any macro expansion which is bad!
    ($name:ident) => {
        pub struct $name;
    }
}

foo_macro!(Foo);
foo_macro!(Bar);

التعليق الأكثر فائدة

لا يبدو أن المشكلة هنا قد تم حلها. كيف تكتب تعليقات المستند لوحدات الماكرو التي تبدأ بـ ident ؟

ال 3 كومينتر

يمكنك فقط إعادة توجيه جميع السمات (تعليقات المستند هي #[doc] سمات) ، ولكن نظرًا لأن تكرار السمات لا يمكن أن يتبعه معرف مباشرةً ، فإنه يتطلب تغيير بناء الجملة قليلاً.

مثال (ملعب)

macro_rules! foo_macro {
    ($(#[$attr:meta])* struct $name:ident) => {
        $(#[$attr])*
        pub struct $name;
    }
}

foo_macro!(
    /// Doc comment for Foo struct.
    struct Foo
);

foo_macro!(
    /// Doc comment for Bar struct.
    struct Bar
);

fn main() {
}

يعد منتدى المستخدم مكانًا جيدًا لمناقشة أسئلة مثل هذه. https://users.rust-lang.org/

تقارير الأخطاء الملموسة مرحب بها هنا ، لكنني سأغلق هذا لأنه تم الرد عليه والمناقشة الأخرى هي الأفضل في منتدى المستخدم.

لا يبدو أن المشكلة هنا قد تم حلها. كيف تكتب تعليقات المستند لوحدات الماكرو التي تبدأ بـ ident ؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات