rustdoc で各アイテムに必要なフィーチャーを表示する方法について。

オプトインの仕組

Docs.rs との連携用の構成値 docsrs を、不安定な機能を有効化するためのフラグとして利用する。なお、docsrs の導入方法は、Docs.rs とローカル環境で少し異なる。そのため、それぞれ個別に指定しなければならない。

サンプル

以下では、フィーチャー my_feature の有効時のみ、関数 my_func が利用可能になる。

そして、その事について API ドキュメントに掲載するようにしている。

手順 1

config.toml ファイルの編集
  • Docs.rs での rustdoc コマンドの引数を指定。
  • フィーチャ my_feature を導入 (デフォルトでの使用有無も指定)。
Cargo.toml

# ...

[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = ["my_feature"]
my_feature = []

# ...

手順 2

Rust ソースファイルの編集

フィーチャーを表示する方法は二通りある。

ただ、普段使いには一括指定の方法のみで十分だろう。

一括指定

不安定な機能 doc_auto_cfg を使用する。

この場合、main.rslib.rs で全体設定を行うだけでよい。

lib.rs

#![cfg_attr(docsrs, feature(doc_auto_cfg))]

#[cfg(feature = "my_feature")]
pub fn my_func() {}

個別指定

不安定な機能 doc_cfg を使用する。

この場合、関数などの各アイテムごとに設定が必要になる。

lib.rs

#![cfg_attr(docsrs, feature(doc_cfg))]

#[cfg(feature = "my_feature")]
#[cfg_attr(docsrs, doc(cfg(feature = "my_feature")))]
pub fn my_func() {}

手順 3

コマンドの実行 (任意)

ローカルのドキュメント生成コマンドで docsrs を有効化する方法は二通りある。

どちらが良いかは、そのプロジェクトにおける config.toml ファイルの取扱による。もし、それが個人用の設定ファイル扱いで、Git などのバージョン管理システムの対象外なら、気軽に編集できるので、設定ファイルから有効化するほうが楽になる。

docsrs をコマンド引数から有効化

以下では、docsrs をコマンド引数から有効化している。


> cargo +nightly --config 'build.rustdocflags = [\"--cfg\", \"docsrs\"]' doc

docsrs を設定ファイルから有効化

以下では、docsrs を設定ファイルから有効化している。

.cargo/config.toml

[build]
rustdocflags = ["--cfg", "docsrs"]

この場合、コマンドは単純になる。


> cargo +nightly doc