快速介绍,我来自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