首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在生成rustdoc时使用本地文件作为机箱标识?

如何在生成rustdoc时使用本地文件作为机箱标识?
EN

Stack Overflow用户
提问于 2021-05-25 16:05:56
回答 1查看 367关注 0票数 5

使用以下方法可以为一个板条箱同时设置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设置rustdocrustdocflags标志的建议也不起作用,因为它导致了error: Option 'output' given more than once。除此之外,它不适合我,因为(至少据我所知)我只能给出绝对路径,而对于图像,我需要一个使用相对路径的解决方案,因为我将这些图像存储在货物根目录的子目录中,以便使用git等方便地传输到另一个系统。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-26 12:10:56

多亏了戈亚尔的最新评论,我终于想出了如何做到这一点:

在我的build.rs中,我将文件复制到target/doc/

代码语言:javascript
复制
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.");
}

然后,我必须确保,在引用它们时使用绝对路径,如下所示:

代码语言:javascript
复制
#![doc(html_favicon_url = "/logo.ico")]
#![doc(html_logo_url = "/logo.png")]

一般来说,最好是读取CARGO_TARGET_DIR环境变量,而不是硬编码target/doc,但这是构建脚本中的尚不具备

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67691701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档