[英]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:
[Iterator](std::iter::Iterator)
[Iterator][iter]
,以及文檔中的其他地方:[iter]: std::iter::Iterator
[Iterator]
,以及文檔中的其他地方:[Iterator]: std::iter::Iterator
RFC 還引入了“隱含的快捷方式參考鏈接” 。 這允許省略鏈接引用,然后自動推斷。
[std::iter::Iterator]
,在文檔中的其他任何地方都沒有[std::iter::Iterator]
的鏈接引用定義[`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 的組成元素生成確定性的文件名。 因此,如果您有一個名為Complex
的enum
您通常可以使用以下方法鏈接到它:
[Complex](enum.Complex.html)
類似地,一個名為Point
的struct
看起來像:
[Point](struct.Point.html)
這應該適用於大多數定義( fn
、 trait
等)。
要在不同的嵌套級別引用 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.