如何在文档测试中构建代码但不运行它?

use*_*932 3 rust rust-cargo

我的文档中有代码,只有在用户计算机上装有某些软件的情况下,该代码才能运行。为了模拟这一点,我将添加panic!到示例代码中:

//!```rust
//!fn main() {
//!    panic!("Not run me");
//!}
//!```

#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {}
}
Run Code Online (Sandbox Code Playgroud)

我想检查注释中的代码是否可以编译,但是我不想在期间运行它cargo test。现在,我得到:

//!```rust
//!fn main() {
//!    panic!("Not run me");
//!}
//!```

#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {}
}
Run Code Online (Sandbox Code Playgroud)

读到有关的文章doctest = false,但这不仅使注释中的代码无法运行,而且还禁用了检查注释中的代码的语法。

如何仅在注释中禁用代码运行,而在注释期间仍启用注释中的代码编译cargo test

log*_*yth 5

您可以使用几个注释来更改Rust代码的处理方式。请参阅测试文档

在您的情况下,听起来像是no_run您想要的那个

//!```rust,no_run
//!fn main() {
//!    panic!("Not run me");
//!}
//!```
Run Code Online (Sandbox Code Playgroud)

另外,您可以使用should_panicRust来运行代码,但出现恐慌。如果是无法实际编译的代码,则可以使用ignore