reexport_proc_macro/lib.rs
1//! A crate providing a macro to re-export a procedural macro.
2//!
3//! This allows for adding additional public items in addition to
4//! re-exported derives. This is unnecessary in Rust edition 2018,
5//! as it's possible to use `pub use` syntax for that purpose.
6//! However, this crate still exists for Rust versions before 1.31.
7
8#![no_std]
9
10/// Re-exports a procedural macro so that all its derives are visible
11/// publicly while allowing to add additional public items.
12///
13/// Intended to be only used with proc-macro crates.
14///
15/// # Examples
16///
17/// This makes a crate export all serde derives.
18///
19/// ```
20/// #[macro_use]
21/// extern crate reexport_proc_macro;
22/// reexport_proc_macro!(serde_derive);
23/// # fn main() {}
24/// ```
25#[macro_export]
26macro_rules! reexport_proc_macro {
27 ($crate_name:ident) => {
28 #[macro_use]
29 #[allow(unused_imports)]
30 extern crate $crate_name;
31 #[doc(hidden)]
32 pub use self::$crate_name::*;
33 };
34}