使用以下方法可以为一个板条箱同时设置rustdoc的图标和徽标:
#![doc(html_favicon_url = "<url_to>/favicon.ico")]#![doc(html_logo_url = "<url_to>/logo.png")]记录在案的这里。
但是,我不想公开上传我的徽标,因此我想自动将这些文件包含在/target/doc中并从那里引用它们。
目前,我已经将各自的数据urls (base64编码)放入这些字段中,并且运行良好,但它极大地膨胀了设置这些属性的源文件。
我知道我可以在使用脚本生成文档之后将图像复制到target/doc中,然后使用相对的url引用它们,但是我想避免这种情况,这样我仍然可以使用cargo doc生成文档。
编辑
注释中关于在--output中使用rustdocflags设置rustdoc的rustdocflags标志的建议也不起作用,因为它导致了error: Option 'output' given more than once。除此之外,它不适合我,因为(至少据我所知)我只能给出绝对路径,而对于图像,我需要一个使用相对路径的解决方案,因为我将这些图像存储在货物根目录的子目录中,以便使用git等方便地传输到另一个系统。
发布于 2021-05-26 12:10:56
多亏了戈亚尔的最新评论,我终于想出了如何做到这一点:
在我的build.rs中,我将文件复制到target/doc/
fn main() {
// Copy the images to the output when generating documentation
println!("cargo:rerun-if-changed=assets/doc");
std::fs::copy("assets/doc/logo.ico", "target/doc/logo.ico").expect("Failed to copy crate favicon when building documentation.");
std::fs::copy("assets/doc/logo.png", "target/doc/logo.png").expect("Failed to copy crate logo when building documentation.");
}然后,我必须确保,在引用它们时使用绝对路径,如下所示:
#![doc(html_favicon_url = "/logo.ico")]
#![doc(html_logo_url = "/logo.png")]一般来说,最好是读取CARGO_TARGET_DIR环境变量,而不是硬编码target/doc,但这是构建脚本中的尚不具备。
https://stackoverflow.com/questions/67691701
复制相似问题