如何在生锈的宏文档中添加示例?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在生锈的宏文档中添加示例?相关的知识,希望对你有一定的参考价值。

在编写宏时,我想提出它,但这包括一些例子。 但是,当我尝试以与常规函数相同的方式执行此操作时,我得到:

[E0468]: an `extern crate` loading macros must be at the crate root 

我每晚都跑cargo test来测试以下内容:

// src/lib.rs in crate with name advent9

/// this macro essentialy appends .as_bytes()
/// `b!("bla")` -> `"bla".as_bytes()`
///
/// # Examples
/// ```
/// #[macro_use]
/// extern crate advent9;
///
/// let bytes : &[u8] = b!("this is a bytestring");
///
/// println!("{:?}", bytes);
/// // prints:
/// // [116, 104, 105, 115, 32, 105, 115, 32, 97, 32, 98, 121, 116, 101, 115, 116, 114, 105, 110, 103]
/// ```
// I don't need this exported, but perhaps the example does?
#[macro_export] 
macro_rules! b {
    ($string:expr) => {
        $string.as_bytes()
    }

我对doctests的理解是每个都包含在他们自己的main函数中。像这样:

fn main() {
    #[macro_use]
    extern crate advent9;

    let bytes : &[u8] = b!("this is a bytestring");

    println!("{:?}", bytes);
    // prints:
    // [116, 104, 105, 115, 32, 105, 115, 32, 97, 32, 98, 121, 116, 101, 115, 116, 114, 105, 110, 103]
}

如果这是正确的,它将解释错误。

有没有办法真正向宏添加示例?

答案

这有可能,虽然有点复杂;你需要以下列方式做到这一点:

/// # Example
/// ```
/// # #[macro_use] extern crate crate_name;
/// # fn main() {
/// use crate_name::module::object;
///
/// <example code>
/// # }
/// ```
#[macro_export]
macro_rules! some_macro {
    <macro code>
}

以上是关于如何在生锈的宏文档中添加示例?的主要内容,如果未能解决你的问题,请参考以下文章

需要示例代码片段帮助

1.1.14 添加自己编写的宏代码(以代码行编号为例)

如何查看xcode下已经预先定义好的宏

在Word中,如何显示“开发工具”选项卡?

如何显示Word中的“开发工具”选项卡?

我应该如何使用 Outlook 发送代码片段?