运行特定的.rs文件

问题描述 投票:0回答:3

快速介绍,我来自python,我已经自学了它,现在我正在尝试学习Rust。我觉得有点混乱。 我在

main.rs
目录中有一个
.rs
文件和其他
src
文件,只是为了拥有更清晰、有组织的代码,因为其他每个文件都执行特定的任务,而
main.rs
只是用一个简单的 CLI 将所有内容放在一起。
我只想测试其中一个
.rs
文件,甚至是其中的一个
fn
,以检查结果是否是我所期望的。
我怎样才能做到这一点?这很简单,也很愚蠢,但我已经阅读了很多内容,但最终没有发现任何可以帮助我的东西。
我读了 this,其中谈到创建
tests
文件夹,然后使用
cargo test
,我已经完成了,但它仍然运行
src/main.rs
而不是我放入
tests
的内容。顺便说一句,我正在使用 CLion 和 Rust 插件。
抱歉,如果这有点重复,我环顾四周,但没有找到答案。

rust clion rust-cargo
3个回答
1
投票

编辑 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
吗?


0
投票

您可以使用

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


0
投票

您可以将特定的

.rs
文件放入
./src/bin/
中来执行此操作。

例如,您可以拥有

./src/bin/test_1.rs
并使用以下命令运行它:

cargo run --bin test_1
© www.soinside.com 2019 - 2024. All rights reserved.