I had a lot of trouble understanding this. Thus I am documenting it here for myself.
All credit goes to the original StackOverFlow
author.
Add one of the following to the root of your crate. Usually lib.rs
1.#![feature(doc_cfg)]
This is less than ideal as it will cause compile errors when used with
stable
2. It is better to use:#![cfg_attr(docsrs, feature(doc_cfg))]
This allows this to be conditionally compiled and does not give any errors.
Add the following to items that you would like to have the tag applied to within your code documentation. As an example:
#[cfg_attr(docsrs, doc(cfg(feature = "my-feature")))] #[cfg(feature = "my-feature")] pub fn test() {}
Add instruction to
cargo.toml
[package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"]
At this point you should be able to compile your code successfully with or without the feature being enabled. But you will not see the tag
in your documentation.
To be able to build your documeatnion locally and confirm that tag
; do the following.
Install a version of nightly
prompt> rustup toolchain install nightly
Build your documentation with nightly to see the
tag
prompt> RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --no-deps --all-features
Reference:
How to get a feature requirement tag in the documentation generated by cargo doc
? - StackOverFlow