Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_rust
提交
6a6bccae
S
skill_tree_rust
项目概览
CSDN 技术社区
/
skill_tree_rust
通知
32
Star
7
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
6a6bccae
编写于
9月 26, 2022
作者:
J
jackymao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
complete documentation tests
上级
48d604e0
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
124 addition
and
3 deletion
+124
-3
data/1.rust初阶/3.文档/1.rustdoc/rustdoc.md
data/1.rust初阶/3.文档/1.rustdoc/rustdoc.md
+2
-2
data/1.rust初阶/4.测试/1.单元测试/unit_tests.md
data/1.rust初阶/4.测试/1.单元测试/unit_tests.md
+2
-0
data/1.rust初阶/4.测试/2.文档测试/config.json
data/1.rust初阶/4.测试/2.文档测试/config.json
+4
-1
data/1.rust初阶/4.测试/2.文档测试/documentation_tests.json
data/1.rust初阶/4.测试/2.文档测试/documentation_tests.json
+8
-0
data/1.rust初阶/4.测试/2.文档测试/documentation_tests.md
data/1.rust初阶/4.测试/2.文档测试/documentation_tests.md
+107
-0
data/1.rust初阶/4.测试/3.集成测试/integration_tests.md
data/1.rust初阶/4.测试/3.集成测试/integration_tests.md
+1
-0
未找到文件。
data/1.rust初阶/3.文档/1.rustdoc/rustdoc.md
浏览文件 @
6a6bccae
# 文档
Rust 社区非常重视文档,并提供了各种工具,使得文档形式多样,容易编写。Rust 文档支持 markdown,使用 rustdoc 解析并转换成 HTML,生成漂亮的、可搜索的文档页面。
Rust 社区非常重视文档,并提供了各种工具,使得文档形式多样,容易编写。Rust
写文档的方式主要和源代码写在一起。Rust
文档支持 markdown,使用 rustdoc 解析并转换成 HTML,生成漂亮的、可搜索的文档页面。
首先,在每个库或可运行程序的 lib.rs 或 main.rs 文件最头部,会使用
``` //! ```
说明库的用途。
...
...
@@ -36,7 +36,7 @@ pub mod bar {
如果你需要单独的文档(使用 markdown 编写),而不是写在程序的注释里面,可以使用
[
mdbook
](
https://github.com/rust-lang/mdBook
)
这个工具。
下面的文档
测试
代码使用有误的是:
下面的文档
注释
代码使用有误的是:
```
rust
...
...
data/1.rust初阶/4.测试/1.单元测试/unit_tests.md
浏览文件 @
6a6bccae
...
...
@@ -28,6 +28,8 @@ mod tests {
A
## 选项
###
A
...
...
data/1.rust初阶/4.测试/2.文档测试/config.json
浏览文件 @
6a6bccae
...
...
@@ -2,7 +2,9 @@
"node_id"
:
"rust-2b4fef4327ad442fbb15c568f8638c31"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[],
"export"
:
[
"documentation_tests.json"
],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.rust初阶/4.测试/2.文档测试/documentation_tests.json
0 → 100644
浏览文件 @
6a6bccae
{
"type"
:
"code_options"
,
"author"
:
"jackymao_com"
,
"source"
:
"documentation_tests.md"
,
"notebook_enable"
:
false
,
"exercise_id"
:
""
}
\ No newline at end of file
data/1.rust初阶/4.测试/2.文档测试/documentation_tests.md
0 → 100644
浏览文件 @
6a6bccae
# 文档测试
据 Rust API 指南中的说明,Rust 的文档测试功能,主要的目的是作为练习函数使用的样例代码。同时也便于在代码更新后确保文档中测试代码正常运行。
考虑到看文档的人常会直接复制文档中的样例代码去运行,文档测试的代码要写得完善。
对写在文档中的代码片断, Rust 会隐式地在其中添加
`fn main()`
和
`extern crate <cratename>`
使之能正常编译。如测试样例的 main 函数返回的不是默认的单元类型,就需要明确的写出来完整的函数签名。
当文档测试中的代码比较长,不便于显示代码的功能,可以在文档中将部分代码隐藏,就是以 # 号加空格开头,这样可使显示出来的有功能性的代码片断更简洁。但隐藏的代码仍然会在运行测试的时候被编译。
下面的文档测试中,能正确运行的是:
## 答案
A
```
rust
/// 在文档测试中使用隐藏的 `try_main`。
///
/// ```
/// # // 被隐藏的行以 `#` 开始
/// # fn try_main() -> Result<(), String> {
/// let res = try::try_div(10, 2)?;
/// # Ok(()) // 从 try_main 返回
/// # }
/// # fn main() { // 开始主函数
/// # try_main().unwrap(); // 调用并展开 try_main,这样出错时测试会 panic
/// # }
pub
fn
try_div
(
a
:
i32
,
b
:
i32
)
->
Result
<
i32
,
String
>
{
if
b
==
0
{
Err
(
String
::
from
(
"Divide-by-zero"
))
}
else
{
Ok
(
a
/
b
)
}
}
```
## 选项
###
B
```
rust
/// # fn main() {
/// let res = try::try_div(10, 2)?;
/// # Ok(())
/// # }
pub
fn
try_div
(
a
:
i32
,
b
:
i32
)
->
Result
<
i32
,
String
>
{
if
b
==
0
{
Err
(
String
::
from
(
"Divide-by-zero"
))
}
else
{
Ok
(
a
/
b
)
}
}
```
###
C
```
rust
/// fn main() {
/// let res = try::try_div(10, 2)?;
/// Ok(())
/// }
pub
fn
try_div
(
a
:
i32
,
b
:
i32
)
->
Result
<
i32
,
String
>
{
if
b
==
0
{
Err
(
String
::
from
(
"Divide-by-zero"
))
}
else
{
Ok
(
a
/
b
)
}
}
```
###
D
```
rust
/// 在文档测试中使用隐藏的 `try_main`。
///
/// ```
/// # // 被隐藏的行以 `#` 开始
/// # fn try_main() {
/// let res = try::try_div(10, 2)?;
/// # Ok(()) // 从 try_main 返回
/// # }
/// # fn main() -> Result<(), String> { // 开始主函数
/// # try_main().unwrap(); // 调用并展开 try_main,这样出错时测试会 panic
/// # }
pub
fn
try_div
(
a
:
i32
,
b
:
i32
)
->
Result
<
i32
,
String
>
{
if
b
==
0
{
Err
(
String
::
from
(
"Divide-by-zero"
))
}
else
{
Ok
(
a
/
b
)
}
}
```
\ No newline at end of file
data/1.rust初阶/4.测试/3.集成测试/integration_tests.md
浏览文件 @
6a6bccae
...
...
@@ -14,6 +14,7 @@ Rust 会对 tests 目录里面的每一个文件当作单独的 crate 来编译,
B
## 选项
### 运行所有测试
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录