hey*_*yx3 4 testing documentation module rust
我正在玩一个用于生成2D噪音的小箱子.这是我的"lib.rs"文件的简化片段:
pub mod my_math {
pub struct Vec2<T> {
...
}
...
}
pub mod my_noise {
use num::Float;
use std::num::Wrapping;
use my_math::*;
/// Gets pseudo-random noise based on a seed vector.
///
/// # Examples
///
/// ```
/// use my_math::Vec2;
///
/// let v_seed = Vec2::<f32>::new_values(4.134, -23.141);
/// let noise_val = get_noise_white(&v_seed);
///
/// assert!(noise_val >= 0.0);
/// assert!(noise_val <= 1.0);
/// ```
pub fn get_noise_white(seed: &Vec2<f32>) -> f32 {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行货物测试时,我收到以下错误:
---- my_noise :: get_noise_white_0 stdout ----
<anon>:3:9:3:16错误:未解决导入
my_math::Vec2.也许是失踪extern crate my_math?<anon>:3使用my_math :: Vec2;
我还在use文档评论中尝试了其他形式的声明,包括use my_math::*;和use self::my_math::*;.如果我完全删除该行,那么我得到一个Vec2未定义的错误.
这样做的正确方法是什么?
你必须指定你的箱子的顶级名称(让我们称之为mylib):
use mylib::my_math::Vec2;
Run Code Online (Sandbox Code Playgroud)
理由是您的doc示例必须由库的客户端按原样使用.如果你把自己放在他们的鞋子里,他们会拿你的图书馆(通常用货物,但没关系),然后把extern crate mylib它们放在他们的顶级lib.rs/main.rs中.然后,为了使用库的某些部分,他们必须指定完全限定的名称才能使用其子代.
这正是你在rustdoc测试评论中必须做的事情.
此外,我认为值得引用Rust书的相关部分,即文档作为测试,它解释了应用于文档代码片段的一些小修改.其中之一是:
如果示例不包含
extern crate,则extern crate <mycrate>;插入.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |