You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不将crate加入依赖即可实现infra-doc链接目标crate

Rust 无正式依赖实现跨crate文档链接的方案

Rust 原生支持在文档注释中编写跨crate的内部链接,示例写法如下:

/// 链接到foo crate中的结构体 [Foo](foo::Foo)

这类链接默认要求被引用的crate必须配置在Cargo.toml的[dependencies]配置段,才能在构建文档时正常解析、支持点击跳转:

[dependencies]
foo = "1.0"

如果仅需要在文档中添加这类跳转链接,不希望当前crate的正式构建引入foo依赖,常规针对测试、示例场景的方案是把依赖加到[dev-dependencies]段:

[dev-dependencies]
foo = "1.0"

但这个方案存在明显缺陷:执行cargo doc命令构建正式发布文档时,这类跨crate链接无法被正常解析,点击会失效。

正确的实现方式是使用Rust提供的条件依赖配置,仅在文档构建场景引入对应依赖,完全不影响正常构建流程,配置方法如下:

[target.'cfg(doc)'.dependencies]
foo = "1.0"
  • 该配置段下的依赖只会在执行cargo doc等文档构建操作时被拉取、参与链接解析
  • 正常执行cargo build、cargo check编译,或是下游用户引入当前crate时,都不会拉取、依赖foo,不会增加正式构建的冗余负担

如果需要让文档测试(doctest)场景下的跨crate链接也能正常解析,可以额外补充doctest场景的专属依赖配置,和上述配置互不冲突:

[target.'cfg(doctest)'.dependencies]
foo = "1.0"

补充说明:

  • 如果你不需要链接匹配本地依赖版本的内容,仅需要跳转到对应crate的公开文档站点,也可以直接在文档注释中写完整URL链接,只是这种方式无法自动同步依赖版本,灵活度远低于原生的内部链接。

内容的提问来源于stack exchange,提问作者Michael Ilyin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:39:36