簡體   English   中英

如何鏈接到 rustdoc 中的其他 fns/structs/enums/traits?

[英]How to link to other fns/structs/enums/traits in rustdoc?

我正在構建一個 Rust 庫並想對其進行一些潤色。 在 rustdoc 中,我有時想鏈接到文檔中庫的其他部分,例如fn s、 trait s 或struct s。 這個的官方語法是什么?

Rust 1.48 開始,您現在可以依賴RFC 1946 這增加了文檔內鏈接的概念。 這允許使用Rust 路徑作為鏈接的 URL:

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

RFC 還引入了“隱含的快捷方式參考鏈接” 這允許省略鏈接引用,然后自動推斷。

  1. [std::iter::Iterator] ,在文檔中的其他任何地方都沒有[std::iter::Iterator]的鏈接引用定義
  2. [`std::iter::Iterator`] ,在文檔中的其他任何地方都沒有[`std::iter::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,
    }
}

生成此文檔:

示例生成的文檔

具體來說,這個 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.48 開始,Rustdoc 現在支持直接的內部文檔鏈接。


Rust 1.48 前:

Rustdoc似乎主要為 crate 的組成元素生成確定性的文件名。 因此,如果您有一個名為Complexenum您通常可以使用以下方法鏈接到它:

[Complex](enum.Complex.html)

類似地,一個名為Pointstruct看起來像:

[Point](struct.Point.html)

這應該適用於大多數定義( fntrait等)。

要在不同的嵌套級別引用 crate 的元素,您可以使用相對路徑(其中每個模塊都是自己的文件夾):

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

或使用絕對路徑:

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

如果構建文檔( cargo doc --no-deps --open )並導航到他們想要的字段或項目並記下 URL,則可以推斷出更多這些“約定”,包括特定字段的錨點等. 請記住,只有發布項目才會發布到文檔。

如果想要鏈接結構的某些特定部分,例如,同一結構中名為foo的方法(使用穩定的rust,而不是nightly

[foo](#method.foo)

或者如果它在另一個結構中

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

在 Rust 1.49 nightly 中它可以工作(1.48 穩定版尚未發布):

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

等等。

在這里閱讀

由於文檔是用 Markdown 編寫的,因此只需使用超鏈接的 Markdown 語法; IE

[anchor text](URL)

另外,看看這個: https : //doc.rust-lang.org/book/documentation.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM