#[doc = crate::_tags!(internal)]
#[doc = crate::_doc_meta!{location("yard")}]
#[cfg_attr(cargo_primary_package, doc(hidden))]
#[cfg_attr(not(feature = "__docs_internal"), doc(hidden))]
#[cfg_attr(nightly_doc, doc(cfg(feature = "__docs_internal")))]
#[macro_export]
macro_rules! _doc_availability· {
(feature = $feat:literal) => {
$crate::_doc_availability!{@wrap
"Available on <strong>crate feature ",
$crate::_doc_availability!{@code $feat},
"</strong> only."
}
};
( all( $(feature = $feat:literal),+ ) ) => {
$crate::_doc_availability!{@wrap
"Available on <strong>crate features ",
$crate::_doc_availability!{@join_features_and $($feat),+},
"</strong> only."
}
};
( any( $(feature = $feat:literal),+ ) ) => {
$crate::_doc_availability!{@wrap
"Available on <strong>crate features ",
$crate::_doc_availability!{@join_features_or $($feat),+},
"</strong> only."
}
};
(@wrap $($strings:tt)+) => {
concat!(
"<div class='item-info' style='margin-left:0;'>",
"<div class='stab portability'>",
$($strings)+,
"</div></div>"
)
};
(@code $string:literal) => {
concat!("<code style='background:none'>", $string, "</code>")
};
(@join_features_and $first:literal $(, $rest:literal)*) => {
concat!(
$crate::_doc_availability!{@code $first}
$(
, " and ", $crate::_doc_availability!{@code $rest}
)*
)
};
(@join_features_or $first:literal $(, $rest:literal)*) => {
concat!(
$crate::_doc_availability!{@code $first}
$(
, " or ", $crate::_doc_availability!{@code $rest}
)*
)
};
}
#[doc(inline)]
pub use _doc_availability· as _doc_availability;