ローカルではビルド出来てたのに...?
Rustで作ったクレートを、Crates.ioにパブリッシュすると、自動でDocs.rsのほうにそのクレートのドキュメントが生成されます。
ただ、僕がとあるクレートをパブリッシュした後Docs.rsを確認してみると以下のようなメッセージでビルドエラーを告げられました。
要は、ビルド失敗してるからbuild logを見てみてねと書かれています。
build logは以下のようになっていました。カオスですね。
原因と対処
まずDocs.rsは、アップロードされたクレートに対してデフォルトでlinux用にビルドするらしいです。僕のクレートはwinapiというwindows専用のクレートを使っていたため、当たり前ですがlinuxでは動かず、このような「ほとんどののシンボルが存在しません」というようなエラーが出ていたようです。
私の場合、以下のようにCargo.tomlに書き込むことでDocs.rsがwindows用にビルドするように命令し、エラーを消すことができました。
[package.metadata.docs.rs]
default-target = "x86_64-pc-windows-msvc"
targets = ["aarch64-pc-windows-msvc", "i686-pc-windows-msvc", "x86_64-pc-windows-msvc"]
# こういうのもあり
# features = ["everything"]
どうしても原因が分からない人のための救済措置
実はrustチームは、Docs.rsのビルドでエラーが出た方の質問を、Githubのissueを通して受け付けています。
**このリンク**からCrate Build Failureを選択し、issueを発行してみましょう。
**僕の場合はその日のうちに返信が来て、解決することができました。(2021/11/05)**本当に親切なチームです。感謝です。
以上、Docs.rsのビルドエラーで困った人用のメモでした。