2015-09-04 71 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編譯錯誤將消失。