快速介绍,我来自python,我已经自学了它,现在我正在尝试学习Rust。我觉得有点混乱。 我在
main.rs
目录中有一个 .rs
文件和其他 src
文件,只是为了拥有更清晰、有组织的代码,因为其他每个文件都执行特定的任务,而 main.rs
只是用一个简单的 CLI 将所有内容放在一起。 .rs
文件,甚至是其中的一个 fn
,以检查结果是否是我所期望的。tests
文件夹,然后使用 cargo test
,我已经完成了,但它仍然运行 src/main.rs
而不是我放入 tests
的内容。顺便说一句,我正在使用 CLion 和 Rust 插件。编辑 2023-09-01: 相关功能现已在 rust (cargo) nightly 中作为实验提供。参见:
此功能实际上并不是货物的一部分,但有一些板条箱可以做到这一点。我最熟悉的是rust-script。它与脚本顶部的像
#!/usr/bin/env rust-script
这样的 hashbang 一起使用,然后使用 ./script.rs
运行它。您甚至可以在脚本中指定依赖项,这些依赖项会从一些特殊注释中解析出来。
否则uou可以直接使用
rustc
编译单个文件,但管理依赖关系等可能会很复杂。
编辑:抱歉,是的 - 看起来您正在尝试编写/运行测试。您在书中链接的页面应该涵盖您想要做的事情。我不确定你所说的“它仍然运行
src/main.rs
而不是我放入的 tests
”是什么意思。 mod tests
里也有 main.rs
吗?
您可以使用
rustc your_file.rs
命令编译任何.rs文件,只要该文件包含main()
函数即可。 rustc
如果没有main函数将会失败:
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`.
但是您可以通过将文件标记为库箱而不是 bin 来跳过此操作:
rustc you_file.rs --crate-type=lib
您可以将特定的
.rs
文件放入 ./src/bin/
中来执行此操作。
例如,您可以拥有
./src/bin/test_1.rs
并使用以下命令运行它:
cargo run --bin test_1