不能在Rust文档测试中使用依赖包

eri*_*rip 6 rust rust-crates rustdoc

我正在尝试为Rust写的一个项目编写文档.其中一个文档需要使用regex::Regex.这是我要写的文档:

/// Return a list of the offsets of the tokens in `s`, as a sequence of `(start, end)`
/// tuples, by splitting the string at each successive match of `regex`.
///
/// # Examples
///
/// ```
/// use rusty_nltk::tokenize::util::regexp_span_tokenize;
/// use regex::Regex;
///
/// let s = "Good muffins cost $3.88\nin New York.  Please buy me
///         two of them.\n\nThanks.";
/// let regex = regex::Regex::new(r"\s").unwrap();
/// let spans = regexp_span_tokenize(s, regex).unwrap();
/// ```
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

---- tokenize::util::regexp_span_tokenize_0 stdout ----
    <anon>:4:9: 4:14 error: unresolved import `regex::Regex`. Maybe a missing `extern crate regex`? [E0432]
<anon>:4     use regex::Regex;
                 ^~~~~
error: aborting due to previous error
Run Code Online (Sandbox Code Playgroud)

但是当我添加时extern crate regex;,我收到此错误:

---- tokenize::util::regexp_span_tokenize_0 stdout ----
    <anon>:3:9: 3:19 error: unresolved import `rusty_nltk::tokenize::util::regexp_span_tokenize`. Maybe a missing `extern crate rusty_nltk`? [E0432]
<anon>:3     use rusty_nltk::tokenize::util::regexp_span_tokenize;
                 ^~~~~~~~~~
<anon>:4:9: 4:14 error: unresolved import `regex::Regex`. Did you mean `self::regex`? [E0432]
<anon>:4     use regex::Regex;
                 ^~~~~
error: aborting due to 2 previous errors
Run Code Online (Sandbox Code Playgroud)

相关文件的一些相关部分是:

SRC/lib.rs:

extern crate regex;
pub mod tokenize;
Run Code Online (Sandbox Code Playgroud)

SRC /记号化/ mod.rs:

extern crate regex;
pub mod util;
Run Code Online (Sandbox Code Playgroud)

(顶部)src/tokenize/util.rs:

extern crate regex; 
use regex::Regex;
Run Code Online (Sandbox Code Playgroud)

我的项目布局有什么问题?

She*_*ter 9

来自Rust编程语言的文档章节:

这是rustdoc用于预处理示例的完整算法:

  1. 任何前导#![foo]属性都保留为crate属性.
  2. 一些常见的允许属性被插入,包括unused_variables,unused_assignments,unused_mut,unused_attributes,和dead_code.小例子经常触发这些lint.
  3. 如果示例不包含extern crate,则extern crate <mycrate>;插入.
  4. 最后,如果示例不包含fn main,则包含文本的其余部分fn main() { your_code }

第3点与此相关.如果没有 extern crate行,则会自动添加您的包.添加第一个后extern crate,将不会自动添加包装箱 - 包括您的包装箱!

您将需要添加extern crate线都regexrusty_nltk.

  • 我正准备发布这个作为答案.我将给出答案,并将我的解决方案作为单独的答案添加. (2认同)