运行特定的.rs文件



快速介绍,我来自python我自学过,现在我正在努力学习Rust。我觉得这有点令人困惑。

我在src目录中有一个main.rs文件和其他.rs文件,只是为了有更清晰和有组织的代码,因为每个其他文件都执行特定的任务,而main.rs只是用一个简单的CLI把它们放在一起。

我只是想测试这些.rs文件中的一个,甚至一个fn里面检查结果是否符合我的期望。

我该怎么做呢?这很简单,也很愚蠢,但我读了很多书,最后发现没有什么能帮到我。

我读了这个,它谈论的是制作一个tests文件夹,然后使用cargo test,我已经做到了,但它仍然运行src/main.rs而不是我在tests中放置的东西。顺便说一句,我正在使用带有Rust插件的CLion。

很抱歉,如果这是一个重复,我环顾四周,但我没有找到一个答案。

编辑2023-09-01:一个相关的特性现在可以在rust (cargo)中每晚作为实验版本使用。看到:

  • https://rust-lang.github.io/rfcs/3424-cargo-script.html
  • <
  • https://doc.rust-lang.org/nightly/cargo/reference/unstable.html脚本/gh>

这个功能并不是货物的一部分,但是有一些板条箱可以做到。我最熟悉的是rust-script。它与脚本顶部的#!/usr/bin/env rust-script之类的散列一起工作,然后使用./script.rs运行它。你甚至可以在脚本中指定依赖关系,这些依赖关系会通过一些特殊的注释解析出来。

否则,你可以直接用rustc编译单个文件,但管理依赖关系等可能会很复杂。

编辑:对不起,是的-它看起来像你试图编写/运行测试。你在书中链接的那一页应该涵盖你要做的事情。我不确定你所说的"是什么意思;它仍然运行src/main.rs,而不是我在tests"中输入的内容。你们在main.rs中也有mod tests吗?

您可以将特定的.rs文件放在./src/bin/中来完成此操作。

例如,您可以使用./src/bin/test_1.rs并使用:

运行它。
cargo run --bin test_1

您可以使用rustc your_file.rs命令编译任何.rs文件,只要该文件包含main()函数。如果没有main函数,rustc将失败:

error[E0601]: `main` function not found in crate `abc`
--> abc.rs:5:2
|
5 | }
|  ^ consider adding a `main` function to `abc.rs`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0601`.

,但你可以通过将文件标记为库crate而不是bin来跳过这个:

rustc you_file.rs --crate-type=lib