From 7c3290822a12aee86f1d2ea392e4811cd203df64 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 1 Feb 2024 20:09:41 +0100 Subject: [PATCH] Extend "Attributes" section in the `re-exports` page --- .../src/write-documentation/re-exports.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/doc/rustdoc/src/write-documentation/re-exports.md b/src/doc/rustdoc/src/write-documentation/re-exports.md index 8ce059cc29c48..34688545c74e9 100644 --- a/src/doc/rustdoc/src/write-documentation/re-exports.md +++ b/src/doc/rustdoc/src/write-documentation/re-exports.md @@ -170,3 +170,32 @@ There are a few attributes which are not inlined though: All other attributes are inherited when inlined, so that the documentation matches the behavior if the inlined item was directly defined at the spot where it's shown. + +These rules also apply if the item is inlined with a glob re-export: + +```rust,ignore (inline) +mod private_mod { + /// First + #[cfg(a)] + pub struct InPrivate; +} + +#[cfg(c)] +pub use self::private_mod::*; +``` + +Otherwise, the attributes displayed will be from the re-exported item and the attributes on the +re-export itself will be ignored: + +```rust,ignore (inline) +mod private_mod { + /// First + #[cfg(a)] + pub struct InPrivate; +} + +#[cfg(c)] +pub use self::private_mod::InPrivate; +``` + +In the above case, `cfg(c)` will not be displayed in the docs.