rustdoc [options] <input>

Options:
    -h, --help          show this help message
    -V, --version       print rustdoc's version
    -v, --verbose       use verbose output
    -w, --output-format [html]
                        the output type to write
        --output PATH   Which directory to place the output. This option is
                        deprecated, use --out-dir instead.
    -o, --out-dir PATH  which directory to place the output
        --crate-name NAME
                        specify the name of this crate
        --crate-type <bin|lib|rlib|dylib|cdylib|staticlib|proc-macro>
                        Comma separated list of types of crates
                        for the compiler to emit
    -L, --library-path DIR
                        directory to add to crate search path
        --cfg           pass a --cfg to rustc
        --check-cfg     pass a --check-cfg to rustc
        --extern NAME[=PATH]
                        pass an --extern to rustc
        --extern-html-root-url NAME=URL
                        base URL to use for dependencies; for example,
                        "std=/doc" links std::vec::Vec to
                        /doc/std/vec/struct.Vec.html
        --extern-html-root-takes-precedence 
                        give precedence to `--extern-html-root-url`, not
                        `html_root_url`
    -C, --codegen OPT[=VALUE]
                        pass a codegen option to rustc
        --document-private-items 
                        document private items
        --document-hidden-items 
                        document items that have doc(hidden)
        --test          run code examples as tests
        --test-args ARGS
                        arguments to pass to the test runner
        --test-run-directory PATH
                        The working directory in which to run tests
        --target TRIPLE target triple to document
        --markdown-css FILES
                        CSS files to include via <link> in a rendered Markdown
                        file
        --html-in-header FILES
                        files to include inline in the <head> section of a
                        rendered Markdown file or generated documentation
        --html-before-content FILES
                        files to include inline between <body> and the content
                        of a rendered Markdown file or generated documentation
        --html-after-content FILES
                        files to include inline between the content and
                        </body> of a rendered Markdown file or generated
                        documentation
        --markdown-before-content FILES
                        files to include inline between <body> and the content
                        of a rendered Markdown file or generated documentation
        --markdown-after-content FILES
                        files to include inline between the content and
                        </body> of a rendered Markdown file or generated
                        documentation
        --markdown-playground-url URL
                        URL to send code snippets to
        --markdown-no-toc 
                        don't include table of contents
    -e, --extend-css PATH
                        To add some CSS rules with a given file to generate
                        doc with your own theme. However, your theme might
                        break if the rustdoc's generated HTML changes, so be
                        careful!
    -Z FLAG             unstable / perma-unstable options (only on nightly
                        build)
        --sysroot PATH  Override the system root
        --playground-url URL
                        URL to send code snippets to, may be reset by
                        --markdown-playground-url or
                        `#![doc(html_playground_url=...)]`
        --display-doctest-warnings 
                        show warnings that originate in doctests
        --crate-version VERSION
                        crate version to print into documentation
        --sort-modules-by-appearance 
                        sort modules by where they appear in the program,
                        rather than alphabetically
        --default-theme THEME
                        Set the default theme. THEME should be the theme name,
                        generally lowercase. If an unknown default theme is
                        specified, the builtin default is used. The set of
                        themes, and the rustdoc built-in default, are not
                        stable.
        --default-setting SETTING[=VALUE]
                        Default value for a rustdoc setting (used when
                        "rustdoc-SETTING" is absent from web browser Local
                        Storage). If VALUE is not supplied, "true" is used.
                        Supported SETTINGs and VALUEs are not documented and
                        not stable.
        --theme FILES   additional themes which will be added to the generated
                        docs
        --check-theme FILES
                        check if given theme is valid
        --resource-suffix PATH
                        suffix to add to CSS and JavaScript files, e.g.,
                        "search-index.js" will become "search-index-suffix.js"
        --edition EDITION
                        edition to use when compiling rust code (default:
                        2015)
        --color auto|always|never
                        Configure coloring of output:
                        auto = colorize, if output goes to a tty (default);
                        always = always colorize output;
                        never = never colorize output
        --error-format human|json|short
                        How errors and other messages are produced
        --diagnostic-width WIDTH
                        Provide width of the output for truncated error
                        messages
        --json CONFIG   Configure the structure of JSON diagnostics
    -A, --allow LINT    Set lint allowed
    -W, --warn LINT     Set lint warnings
        --force-warn LINT
                        Set lint force-warn
    -D, --deny LINT     Set lint denied
    -F, --forbid LINT   Set lint forbidden
        --cap-lints LEVEL
                        Set the most restrictive lint level. More restrictive
                        lints are capped at this level. By default, it is at
                        `forbid` level.
        --index-page PATH
                        Markdown file to be used as index page
        --enable-index-page 
                        To enable generation of the index page
        --static-root-path PATH
                        Path string to force loading static files from in
                        output pages. If not set, uses combinations of '../'
                        to reach the documentation root.
        --persist-doctests PATH
                        Directory to persist doctest executables into
        --show-coverage 
                        calculate percentage of public items with
                        documentation
        --test-runtool The tool to run tests with when building for a different target than host
                        
        --test-runtool-arg One argument (of possibly many) to pass to the runtool
                        
        --test-builder PATH
                        The rustc-like binary to use as the test builder
        --test-builder-wrapper PATH
                        Wrapper program to pass test-builder and arguments
        --check         Run rustdoc checks
        --generate-redirect-map 
                        Generate JSON file at the top level instead of
                        generating HTML redirection files
        --emit [toolchain-shared-resources,invocation-specific,dep-info]
                        Comma separated list of types of output for rustdoc to
                        emit
        --no-run        Compile doctests without running them
        --remap-path-prefix FROM=TO
                        Remap source names in compiler messages
        --show-type-layout 
                        Include the memory layout of types in the docs
        --no-capture    Don't capture stdout and stderr of tests
        --generate-link-to-definition 
                        Make the identifiers in the HTML source code pages
                        navigable
        --scrape-examples-output-path collect function call information and output at the given path
                        
        --scrape-examples-target-crate collect function call information for functions from the target crate
                        
        --scrape-tests  Include test code when scraping examples
        --with-examples path to function call information (for displaying examples in the documentation)
                        
        --merge none|shared|finalize
                        Controls how rustdoc handles files from previously
                        documented crates in the doc root
                        none = Do not write cross-crate information to the
                        --out-dir
                        shared = Append current crate's info to files found in
                        the --out-dir
                        finalize = Write current crate's info and
                        --include-parts-dir info to the --out-dir, overwriting
                        conflicting files
        --parts-out-dir path/to/doc.parts/<crate-name>
                        Writes trait implementations and other info for the
                        current crate to provided path. Only use with
                        --merge=none
        --include-parts-dir path/to/doc.parts/<crate-name>
                        Includes trait implementations and other crate info
                        from provided path. Only use with --merge=finalize
        --html-no-source 
                        Disable HTML source code pages generation
        --doctest-build-arg ARG
                        One argument (of possibly many) to be used when
                        compiling doctests
        --disable-minification 
                        disable the minification of CSS/JS files
                        (perma-unstable, do not use with cached files)
        --generate-macro-expansion 
                        Add possibility to expand macros in the HTML source
                        code pages
        --plugin-path DIR
                        removed, see issue #44136
                        <https://github.com/rust-lang/rust/issues/44136> for
                        more information
        --passes PASSES removed, see issue #44136
                        <https://github.com/rust-lang/rust/issues/44136> for
                        more information
        --plugins PLUGINS
                        removed, see issue #44136
                        <https://github.com/rust-lang/rust/issues/44136> for
                        more information
        --no-defaults   removed, see issue #44136
                        <https://github.com/rust-lang/rust/issues/44136> for
                        more information
    -r, --input-format [rust]
                        removed, see issue #44136
                        <https://github.com/rust-lang/rust/issues/44136> for
                        more information

    @path               Read newline separated options from `path`

More information available at https://doc.rust-lang.org/$CHANNEL/rustdoc/what-is-rustdoc.html
