rustdoc.md 2.2 KB
Newer Older
J
jackymao 已提交
1 2
# 文档

J
jackymao 已提交
3
Rust 社区非常重视文档,并提供了各种工具,使得文档形式多样,容易编写。Rust 文档支持 markdown,使用 rustdoc 解析并转换成 HTML,生成漂亮的、可搜索的文档页面。
J
jackymao 已提交
4

J
jackymao 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
首先,在每个库或可运行程序的 lib.rs 或 main.rs 文件最头部,会使用 ``` //! ``` 说明库的用途。

```rust
//! This crate is for ...
//!
```

也可以使用 #[doc=...] 方式包含文本文件的方式,带入大段的说明:

```rust
#[doc = include_str!("../../README.md")]
```

其次,在每个模块,函数,结构体等的上面使用 ```///``` 给它们添加对应的说明文档; 你还可以在这里写上对应的测试代码,在运行 cargo test 的时候这些文档里面的代码也会一起测试并给出结果。

```rust
pub use bar::Bar;

/// bar docs
pub mod bar {
    /// the docs for Bar
    pub struct Bar;

    /// the docs for funtion
    pub fn baz() {}
}
```

当你写了一些文档只准备自己看或给看源代码的人看,而不准备让它解析到生成的文档中去,可以使用 ```#[doc(hidden)]``` 让它不渲染到文档里面。

写完程序和文档之后,使用 cargo doc 生成对应的文档。

如果你需要单独的文档(使用 markdown 编写),而不是写在程序的注释里面,可以使用 [mdbook](https://github.com/rust-lang/mdBook) 这个工具。

下面的文档测试代码使用有误的是:

```rust

//! This is a test crate about rustdoc
//! 
//! We will have lib description doc, mod doc, struct doc, function doc, include attribute, hidden attribute, etc

// == A ==
/// bar docs
pub mod bar {
    
    // == B ==
    /// the docs for Bar
    pub struct Bar;

    // == C == 
    /// the docs for funtion
    pub fn baz() {}

    // == D ==
    #[doc(include("readme.md"))]

    #[doc(hidden)]
    fn private() {}
}



```

## 答案

D

## 选项

###

A

###

B

###

C
J
jackymao 已提交
87 88 89 90 91 92 93 94 95 96



<!-- 
ref:
https://doc.rust-lang.org/stable/rustdoc/
https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html#commenting-contained-items
https://doc.rust-lang.org/stable/rustdoc/write-documentation/documentation-tests.html
https://zhuanlan.zhihu.com/p/352387200
-->