Passes
Rustdoc has a concept called "passes". These are transformations that
rustdoc
runs on your documentation before producing its final output.
In addition to the passes below, check out the docs for these flags:
Default passes
By default, rustdoc will run some passes, namely:
strip-hidden
strip-private
collapse-docs
unindent-comments
However, strip-private
implies strip-private-imports
, and so effectively,
all passes are run by default.
This pass implements the #[doc(hidden)]
attribute. When this pass runs, it
checks each item, and if it is annotated with this attribute, it removes it
from rustdoc
's output.
Without this pass, these items will remain in the output.
unindent-comments
When you write a doc comment like this:
/// This is a documentation comment.
There's a space between the ///
and that T
. That spacing isn't intended
to be a part of the output; it's there for humans, to help separate the doc
comment syntax from the text of the comment. This pass is what removes that
space.
The exact rules are left under-specified so that we can fix issues that we find.
Without this pass, the exact number of spaces is preserved.
collapse-docs
With this pass, multiple #[doc]
attributes are converted into one single
documentation string.
For example:
#[doc = "This is the first line."]
#[doc = "This is the second line."]
Gets collapsed into a single doc string of
This is the first line.
This is the second line.
strip-private
This removes documentation for any non-public items, so for example:
/// These are private docs.
struct Private;
/// These are public docs.
pub struct Public;
This pass removes the docs for Private
, since they're not public.
This pass implies strip-priv-imports
.
strip-priv-imports
This is the same as strip-private
, but for extern crate
and use
statements instead of items.