通过Cargo传递程序参数

时间:2015-09-04 14:13:15

标签: rust

我有一些目前正在使用getopts的示例代码,该代码在Cargo.toml

中被指定为依赖项
[dependencies]
getopts = "0.2"

然而,由于显而易见的原因,我似乎无法通过货物(例如-t)传递论据(--testcargo run --test)。

由于我已指定外部依赖项,因此尝试运行rustc src/main.rs --test也无效:

src/main.rs:2:5: 2:21 error: unresolved import `getopts::Options`. There is no `Options` in `getopts`
src/main.rs:2 use getopts::Options;
              ^~~~~~~~~~~~~~~~
error: aborting due to previous error

目前还有另一种方法可以实现这个或一些常见的替代方案吗?

2 个答案:

答案 0 :(得分:14)

您可以使用cargo run将结尾参数传递给--

cargo run -- --test

来自man页面:

  

所有尾随参数都传递给要运行的二进制文件。如果你路过   Cargo和二进制文件的参数,--之后的二进制文件,   去货物之前的那些。

答案 1 :(得分:0)

在我看来,你有两个不同的问题。 首先,如何将标志传递给您的可执行文件(这是由@TartanLlama解决的),第二个是您的编译错误。

供将来参考(至少对于我的系统有生锈1.19,货物0.20): 您使用了外部包getopts,默认情况下rustc不知道。 另一方面,cargo了解这一点。 通过运行cargo rustc(甚至更好cargo build)代替rustc,编译错误将消失。