1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//! A crate providing a macro to re-export a procedural macro.
//!
//! This allows for adding additional public items in addition to
//! re-exported derives. This is unnecessary in Rust edition 2018,
//! as it's possible to use `pub use` syntax for that purpose.
//! However, this crate still exists for Rust versions before 1.31.

#![no_std]

/// Re-exports a procedural macro so that all its derives are visible
/// publicly while allowing to add additional public items.
///
/// Intended to be only used with proc-macro crates.
///
/// # Examples
///
/// This makes a crate export all serde derives.
///
/// ```
/// #[macro_use]
/// extern crate reexport_proc_macro;
/// reexport_proc_macro!(serde_derive);
/// # fn main() {}
/// ```
#[macro_export]
macro_rules! reexport_proc_macro {
    ($crate_name:ident) => {
        #[macro_use]
        #[allow(unused_imports)]
        extern crate $crate_name;
        #[doc(hidden)]
        pub use self::$crate_name::*;
    };
}