概括
我对 Rust 相当陌生,并决定使用它来将现有项目移植到其中。我打算用来clap
处理 CLI 选项,但我不断收到错误。
我需要做什么才能clap
正确安装,以便它可以在我的项目中作为依赖项使用(例如extern crate clap; [...] use clap::App; [...]
?
我在使用其他箱子时没有遇到问题(到目前为止),所以我不确定这里有什么不同,或者箱子本身是否有问题。
我已经看到了一些问题(例如这个),它只是建议将依赖项添加到.toml
文件中,或者似乎没有为我所看到的提供解决方案。
我在 Ubuntu Linux 中,如果这有什么不同的话。
我试过的
添加clap = "2.33.0"
到我的Cargo.toml
文件(参见https://crates.io/crates/clap)会导致 VSCode(通过 RLS)记录以下内容:
{
"resource": "[...]/Projects/takeout/Cargo.toml",
"owner": "rust",
"severity": 8,
"message": "Could not compile `clap`.\nprocess didn't exit successfully: `[...]/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/rls --crate-name clap [...]/.cargo/registry/src/github.com-1ecc6299db9ec823/clap-2.33.0/src/lib.rs --color never --crate-type lib --emit=dep-info,metadata -C debuginfo=2 --cfg 'feature=\"ansi_term\"' --cfg 'feature=\"atty\"' --cfg 'feature=\"color\"' --cfg 'feature=\"default\"' --cfg 'feature=\"strsim\"' --cfg 'feature=\"suggestions\"' --cfg 'feature=\"vec_map\"' -C metadata=630980a214d5fd10 -C extra-filename=-630980a214d5fd10 --out-dir [...]/Projects/takeout/target/rls/debug/deps -L dependency=[...]/Projects/takeout/target/rls/debug/deps --extern ansi_term=[...]/Projects/takeout/target/rls/debug/deps/libansi_term-1510a9addefc0253.rmeta --extern atty=[...]/Projects/takeout/target/rls/debug/deps/libatty-7c4847fd9fc1e3d9.rmeta --extern bitflags=[...]/Projects/takeout/target/rls/debug/deps/libbitflags-8369a9aec15a5abb.rmeta --extern strsim=[...]/Projects/takeout/target/rls/debug/deps/libstrsim-301d1cf239e9cd24.rmeta --extern textwrap=[...]/Projects/takeout/target/rls/debug/deps/libtextwrap-a799d71e2d028df4.rmeta --extern unicode_width=[...]/Projects/takeout/target/rls/debug/deps/libunicode_width-58e38dd9d658dcfb.rmeta --extern vec_map=[...]/Projects/takeout/target/rls/debug/deps/libvec_map-4f8e59c92e9953d8.rmeta --cap-lints allow --error-format=json --sysroot [...]/.rustup/toolchains/stable-x86_64-unknown-linux-gnu` (exit code: 101)",
"startLineNumber": 1,
"startColumn": 1,
"endLineNumber": 10000,
"endColumn": 1
}
根据clap repo本身的自述文件,只需添加它就可以了:
要完全使用,请在您的 Cargo.toml 中添加 clap 作为依赖项,以便从 crates.io 使用:
[dependencies] clap = "~2.33"
但事实并非如此。
我已经尝试过使用和不使用~
前缀以及clap = {version = "2.33", features = ["yaml"]}
,这也显示在 repo 中,但没有运气。(是的,我正在尝试从.yaml
文件加载 CLI 选项。)
从 shell 中尝试cargo install clap --version 2.33.0
只会返回一条错误消息:error: specified package has no binaries
.
直接针对 Git 存储库也会产生相同的错误消息:
cargo install --git https://github.com/clap-rs/clap.git --tag v2.31.2 --features yaml 101 ↵
Updating git repository `https://github.com/clap-rs/clap.git`
Installing clap v2.31.2 (https://github.com/clap-rs/clap.git?tag=v2.31.2#07c15d28)
error: specified package has no binaries
v2.33.0
请注意, Git 存储库中没有标签(在撰写本文时)。
如果您知道如何让 VSCode 停止将所有内容标记为错误,那么您将获得奖励: