如何在 rustdoc 中链接到其他 fns/structs/enums/trait?

我正在建一个 Rust 图书馆,想给它一些润色。在 rustdoc 中,我有时想把 链接转移到文档中库的其他部分,例如 fns、 traitstructs。这个问题的官方语法是什么?

17480 次浏览

由于文档是用 Markdown 编写的,所以只需使用超链接的 Markdown 语法即可;。

[anchor text](URL)

还有,看看这个: https://doc.rust-lang.org/book/documentation.html

从 Rust 1.48开始,Rustdoc 现在支持直接的文档内链接。


Pre Rust 1.48:

Rustdoc似乎为一个板条箱的组成元素生成了大多数确定性的文件名。因此,如果你有一个名为 Complexenum,你通常可以使用以下方法链接到它:

[Complex](enum.Complex.html)

类似地,名为 Pointstruct看起来就像:

[Point](struct.Point.html)

这应该延伸到大多数定义(fntrait等等)。

为了引用不同嵌套层次的板条箱元素,可以使用相对路径(其中每个模块都是自己的文件夹) :

[Point](../model/struct.Point.html)

或使用绝对路径:

[Point](/crate_name/model/struct.Point.html)

如果构建文档(cargo doc --no-deps --open)并导航到他们想要的字段或项目并注意到 URL,就可以推断出更多的这些“约定”,包括特定字段的锚等。请记住,只有酒吧条目才会发布给文档。

如果想要链接结构的某个特定部分,例如,在同一个结构中名为 foo的方法(使用 稳定锈,而不是 每晚)

[foo](#method.foo)

或者它是否在另一个结构中

[foo](struct.OtherStruct.html#method.foo)

至于 生锈1.48,您现在可以依赖于 RFC 1946。这增加了文档内链接的概念。这允许使用 锈迹斑斑作为链接的 URL:

  1. [Iterator](std::iter::Iterator)
  2. 以及文档中的其他地方: [iter]: std::iter::Iterator
  3. 以及文档中的其他地方: [Iterator]: std::iter::Iterator

RFC 还引入了 “隐含捷径参考链接”。这允许省略链接引用,然后自动推断。

  1. [std::iter::Iterator],没有文档中其他任何地方的迭代器的链接引用定义
  2. [`std::iter::Iterator`],没有文档中其他任何地方的 Iterator 的链接引用定义(与前面的样式相同,但是带有反勾以将链接格式化为内联代码)

作为一个具体的例子,下面的源代码:

//! Check out [ExampleStruct], especially [this
//! method](ExampleStruct::foo), but [the trait method][trait] is also
//! cool. There is also [an enum variant you can
//! use](nested::ExampleEnum::Beta).
//!
//! [trait]: ExampleTrait::bar


pub struct ExampleStruct;


impl ExampleStruct {
pub fn foo(&self) {}
}


pub trait ExampleTrait {
fn bar();
}


pub mod nested {
pub enum ExampleEnum {
Alpha,
Beta,
}
}

提供以下文件:

example generated documentation

具体来说,这个 HTML 是生成的:

<p>Check out <a href="../doc_link_example/struct.ExampleStruct.html" title="ExampleStruct">ExampleStruct</a>, especially <a href="../doc_link_example/struct.ExampleStruct.html#method.foo">this method</a>, but <a href="../doc_link_example/trait.ExampleTrait.html#tymethod.bar">the trait method</a> is also cool. There is also <a href="../doc_link_example/nested/enum.ExampleEnum.html#Beta.v">an enum variant you can use</a>.</p>

在 Rust 每晚1分49秒中它工作正常(1.48稳定版还没有发布) :

  • [ super::structs::WebApiResponse]
  • [ mycrate::structs::WebApiResponse]

等等。

看这里