我正在尝试将文档测试添加到我正在导出的Rust宏中.像这样的东西:
/// Usage:
///
/// ```
/// let x = addone!(100);
/// ```
#[macro_export]
macro_rules! addone {
    ($x:expr) => ($x + 1)
}
Run Code Online (Sandbox Code Playgroud)
如果我cargo test继续这样做,我明白了
failures:
---- src/lib.rs - addone (line 3) stdout ----
    error: cannot find macro `addone!` in this scope
 --> src/lib.rs:2:9
  |
2 | let x = addone!(100);
  |         ^^^^^^
Run Code Online (Sandbox Code Playgroud)
我想不出macro_use在doc测试中添加的合法方式,所以没有运气.
Chr*_*gan 14
extern crate foo; fn main() { … }如果代码块没有在代码中找到这些元素,Doc测试会自动将代码块包装起来,但是为了获得导出的宏,您需要使用该#[macro_use]属性extern crate foo;.
因此,你应该这样写:
/// Usage:
///
/// ```
/// # #[macro_use] extern crate foo; fn main() {
/// let x = addone!(100);
/// # }
/// ```
#[macro_export]
macro_rules! addone {
    ($x:expr) => ($x + 1)
}
Run Code Online (Sandbox Code Playgroud)
(该线前缀# 得到隐藏在输出,但包括,SANS的标记,在获取该文档测试编译的代码.)
这是Rust编程语言的第一版.
至于所有包含缺少crate属性的crate std都有一个暗示,因此它的宏立即起作用.#[macro_use] extern crate std;#![no_std]
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2272 次  |  
        
|   最近记录:  |