在文档测试中使用本地模块时出错

时间:2015-06-24 19:36:40

标签: testing module documentation rust

我正在玩一个小箱子来制作2D噪音。这是我的" lib.rs"的简化片段。文件:

my_math::Vec2

但是,当我运行货物测试时,我收到以下错误:

  

---- my_noise :: get_noise_white_0 stdout ----

     

< anon>:3:9:3:16错误:未解决的导入extern crate my_math。也许缺少use

     

< anon>:3使用my_math :: Vec2;

我还在文档评论中尝试了其他形式的use my_math::*;语句,包括use self::my_math::*;Vec2。如果我完全删除该行,则会收到var string = "*Other text that is dynamic in length* width: 4874px; height: 898px; *more dynamic length text*"; var windexStart=string.indexOf('width')+6; var windexStop=string.indexOf('px;'); var hindexStart=string.indexOf('height')+7; var hindexStop=string.lastIndexOf('px;'); var width=string.substring(windexStart,windexStop); var height=string.substring(hindexStart,hindexStop); alert(width+' '+height);未定义的错误。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

你必须指定你的箱子的顶级名称(我们称之为mylib):

use mylib::my_math::Vec2;

理由是您的doc示例必须由您的库的客户端按原样使用。如果你把自己放在他们的鞋子里,他们会拿你的图书馆(通常是货物,但没关系),然后在他们的顶级lib.rs/main.rs中放一个extern crate mylib。然后,为了使用库的某些部分,他们必须指定完全限定的名称才能使用其子代。

这正是你在rustdoc测试评论中所要做的。

另外,我认为值得引用Rust书的相关部分Documentation as tests,它解释了应用于doc-code片段的一些小修改。其中之一是:

  

如果示例中不包含extern crate,则会插入extern crate <mycrate>;