macro_rules! reexport {
( rust : core $( :: $( $core_path:ident )::+)?,
$( local_module: $module_feature:literal, )?
$( extra_features: $($extraf:literal),+ $(,)? )?
$( tag: $tag:expr, )?
doc: $description:literal,
$( $item:ident ),*
$(@ $item_to_rename:ident as $item_renamed:ident),*
$(,)?
) => { $crate::paste! {
#[doc(inline)]
$( #[doc = $tag] )?
#[doc = "<span class='stab portability' title='re-exported from rust's "
"`core`'>`core`</span>"]
#[doc = $description]
#[doc = "\n\n*Re-exported from [`core" $( "`]::[`" $( $core_path "::" )+ )?
"`](https://doc.rust-lang.org/core/" $($( $core_path "/" )+)? ")*"]
#[doc = $("`" $item_to_rename "`→[`" $item_renamed "`]")* ".\n\n---"]
#[cfg_attr(feature = "nightly_doc", doc(cfg(all(
$( feature = $module_feature, )?
$( all($(feature = $extraf),+) )?
))))]
#[cfg(all(
$( $(feature = $extraf),+ )?
))]
pub use core :: $($( $core_path :: )+)? {
$( $item ),*
$( $item_to_rename as $item_renamed ),*
};
}};
( rust : alloc $( :: $( $alloc_path:ident )::+)?,
$( local_module: $module_feature:literal, )?
$( tag: $tag:expr, )?
doc: $description:literal,
$( $item:ident ),*
$(@ $item_to_rename:ident as $item_renamed:ident),*
$(,)?
) => { $crate::paste! {
#[doc(inline)]
#[allow(rustdoc::broken_intra_doc_links)] $( #[doc = $tag] )?
#[doc = "<span class='stab portability' title='re-exported from rust's "
"`alloc`'>`alloc`</span>"]
#[doc = $description]
#[doc = "\n\n*Re-exported from [`alloc" $( "`]::[`" $( $alloc_path "::" )+ )?
"`](https://doc.rust-lang.org/alloc/" $($( $alloc_path "/" )+)? ")*"]
#[doc = $("`" $item_to_rename "`→[`" $item_renamed "`]")* ".\n\n---"]
#[cfg_attr(
feature = "nightly_doc",
doc(cfg(all(
$( feature = $module_feature, )?
feature = "alloc"
)))
)]
#[cfg(feature = "alloc")]
pub use crate::_dep::_alloc :: $($( $alloc_path :: )+)? {
$( $item ),*
$( $item_to_rename as $item_renamed ),*
};
}};
( rust : std $( :: $( $std_path:ident )::+)?,
$( local_module: $module_feature:literal, )?
$( tag: $tag:expr, )?
doc: $description:literal,
$( $item:ident ),*
$(@ $item_to_rename:ident as $item_renamed:ident),*
$(,)?
) => { $crate::paste! {
#[doc(inline)]
$( #[doc = $tag] )?
#[doc = "<span class='stab portability' title='re-exported from rust's "
"`std`'>`std`</span>"]
#[doc = $description]
#[doc = "\n\n*Re-exported from [`std" $( "`]::[`" $( $std_path "::" )+ )?
"`](https://doc.rust-lang.org/std/" $($( $std_path "/" )+)? ")*"]
#[doc = $("`" $item_to_rename "`→[`" $item_renamed "`]")* ".\n\n---"]
#[cfg_attr(
feature = "nightly_doc",
doc(cfg(all(
$( feature = $module_feature, )?
feature = "std"
)))
)]
#[cfg(feature = "std")]
pub use std :: $($( $std_path :: )+)? {
$( $item ),*
$( $item_to_rename as $item_renamed ),*
};
}};
( rust : no_std|std $( :: $( $std_path:ident )::+)?,
$( local_module: $module_feature:literal, )?
$( tag: $tag:expr, )?
doc: $description:literal,
$( $item:ident ),*
$(@ $item_to_rename:ident as $item_renamed:ident),*
$(,)?
) => { $crate::paste! {
#[doc(inline)]
$( #[doc = $tag] )?
#[doc = $description]
#[doc = "\n\n*Re-exported from [`std" $( "`]::[`" $( $std_path "::" )+ )?
"`](https://doc.rust-lang.org/std/" $($( $std_path "/" )+)? ")*"]
#[doc = $("`" $item_to_rename "`→[`" $item_renamed "`]")* ".\n\n---"]
#[cfg_attr(
feature = "nightly_doc",
doc(cfg(all(
$( feature = $module_feature, )?
any(feature = "std", feature = "no_std")
)))
)]
#[cfg(feature = "std")]
pub use std :: $($( $std_path :: )+)? {
$( $item ),*
$( $item_to_rename as $item_renamed ),*
};
}};
( rust : not(std)|std $( :: $( $std_path:ident )::+)?,
$( local_module: $module_feature:literal, )?
$( tag: $tag:expr, )?
doc: $description:literal,
$( $item:ident ),*
$(@ $item_to_rename:ident as $item_renamed:ident),*
$(,)?
) => { $crate::paste! {
#[doc(inline)]
$( #[doc = $tag] )?
#[doc = $description]
#[doc = "\n\n*Re-exported from [`std" $( "`]::[`" $( $std_path "::" )+ )?
"`](https://doc.rust-lang.org/std/" $($( $std_path "/" )+)? ")*"]
#[doc = $("`" $item_to_rename "`→[`" $item_renamed "`]")* ".\n\n---"]
#[cfg_attr(
feature = "nightly_doc",
doc(cfg(all(
$( feature = $module_feature, )?
)))
)]
#[cfg(feature = "std")]
pub use std :: $($( $std_path :: )+)? {
$( $item ),*
$( $item_to_rename as $item_renamed ),*
};
}};
(
crate $dep_str:literal | $dep:ident,
doc: $description:literal
$(, features: $( $f:literal ),+ )?
) => { $crate::paste! {
#[doc = "<span class='stab portability' title='re-exported `" $dep_str
"`'>`" $dep_str "`</span>"]
#[doc = $description "\n\n---" ]
#[doc(inline)]
pub use ::$dep;
}};
(
optional_crate ($dep_safe:tt)
$dep_feat:literal, $dep_name:literal, $dep_mod:ident,
doc: $description:literal
$(, features: $( $f:literal ),+ )?
) => { $crate::paste! {
#[cfg(all(feature = $dep_feat $(, $(feature = $f),+ )? ))]
$crate::items! {
#[cfg(feature = "safest")]
#[$crate::compile(diff($dep_safe, safe))]
const [<SAFEST_ $dep_name:upper>]: () = { panic![concat!["The `", $dep_name,
"` dependency is not compatible with the `safest` feature"]] };
#[doc = "<span class='stab portability' title='re-exported `" $dep_name
"`'>`" $dep_name "`</span>"]
#[doc = $description "\n\n---" ]
#[cfg_attr(
feature = "nightly_doc",
doc(cfg(all(
feature = $dep_feat $(, $(feature = $f)+ )?
)))
)]
#[doc(inline)]
pub use ::$dep_mod;
}
}};
(
$dep_feat:literal, $dep_name:literal, $dep_mod:ident $( :: $dep_path:path)?,
$( features: $( $f:literal ),+ ,)?
$( tag: $tag:expr, )?
doc: $description:literal,
$( $item:ident ),*
$(@ $item_to_rename:ident as $item_renamed:ident),*
$(,)?
) => { $crate::paste! {
#[doc(inline)]
$( #[doc = $tag] )?
#[doc = "<span class='stab portability' title='re-exported from the `"
$dep_name "` crate'>`" $dep_name "`</span>"]
#[doc = $description]
#[doc = "\n\n*Re-exported from the [`" $dep_name
"`](https://docs.rs/" $dep_name " ) crate*"]
#[doc = $("`" $item_to_rename "`→[`" $item_renamed "`]")* ".\n\n---"]
#[cfg_attr(
feature = "nightly_doc",
doc(cfg(all(
feature = $dep_feat $(, $(feature = $f)+ )?
)))
)]
#[cfg(all(feature = $dep_feat $(, $(feature = $f),+ )? ))]
pub use crate::_dep::$dep_mod $( ::$dep_path )? :: {
$( $item ),*
$( $item_to_rename as $item_renamed ),*
};
}};
(
non-optional $dep_str:literal | $dep:ident $( :: $dep_path:path)?,
$( features: $( $f:literal ),+ ,)?
$( local_module: $module_feature:literal ,)?
$( tag: $tag:expr, )?
doc: $description:literal,
$( $item:ident ),*
$(@ $item_to_rename:ident as $item_renamed:ident),*
$(,)?
) => { $crate::paste! {
#[doc(inline)]
$( #[doc = $tag] )?
#[doc = "<span class='stab portability' title='re-exported from the `" $dep_str
"` crate'>`" $dep_str "`</span>"]
#[doc = $description]
#[doc = "\n\n*Re-exported from the [`" $dep_str
"`](https://docs.rs/" $dep_str " ) crate*"]
#[doc = $("`" $item_to_rename "`→[`" $item_renamed "`]")* ".\n\n---"]
#[cfg_attr(feature = "nightly_doc", doc(cfg(all(
$( feature = $module_feature ,)?
$( $( feature = $f ),+ )?
))))]
#[cfg(all( $($( feature = $f )+)? ))]
pub use ::$dep $( ::$dep_path )? :: {
$( $item ),*
$( $item_to_rename as $item_renamed ),*
};
}};
}
pub(crate) use reexport;