2015-09-04 74 views
3

我有当前正在进行的getopts使用被指定为一个依赖于Cargo.toml传递程序参数通过货物

[dependencies] 
getopts = "0.2" 

一些示例代码但是我似乎无法通过货运传递参数(-t--test) (例如cargo 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 

有另一种方式来实现这一目标还是暂且一些常见的选择吗?

回答

8

可以使用--传递尾随参数cargo run

cargo run -- --test 

man页:

所有的尾随参数传递到二进制运行。如果您将 参数传递给Cargo和二进制文件,那么--之后的参数将转到二进制文件, ,然后再转到Cargo。

+0

感谢您的简单解决方案;应该更频繁地阅读手册页:-) – Juxhin

+3

@Juxhin:请注意,它通常用于调用其他程序的许多Unix工具;所以一般来说很好。 –

+0

@MatthieuM。这是很好的知道! – Juxhin

0

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

为了将来的参考(这是至少对我的系统防锈1.19,货0.20)真实: 您使用了一个外部板条箱getopts,其中rustc默认情况下不知道。 cargo另一方面了解。 通过运行cargo rustc(或更好的cargo build)而不是rustc编译错误将消失。