从GitHub构建一个依赖的箱子时找不到`Cargo.toml`

tez*_*tez 5 rust rust-cargo

我正在尝试使用rust-mosquitto库.我的当前Cargo.toml是:

[package]
name = "HomeDaemon"
version = "0.1.0"
authors = ["RTR <k.teza1@gmail.com>"]

[dependencies.mosquitto]
git = "https://github.com/kteza1/rust-mosquitto"
Run Code Online (Sandbox Code Playgroud)

当我运行时cargo build,报告以下错误:

Could not find `Cargo.toml` in `/Users/ravitejareddy/.cargo/git/checkouts/rust-mosquitto-8203e77dcf072bf7/rust-mosquitto`
Run Code Online (Sandbox Code Playgroud)

在实际的下载~/.cargo/git/checkouts/rust-mosquitto-8203e77dcf072bf7/master表明,Cargo.toml是存在的.

rust-mosquitto在上面的路径中有一个额外的,是一个问题?

She*_*ter 5

问题来自你Cargo.toml的例子/ ticktock:

[dependencies.mosquitto]
version = "*"
path = "../../../rust-mosquitto" 
Run Code Online (Sandbox Code Playgroud)

从git下载项目时,将扫描所有子目录以获取更多Cargo.toml文件.如果你跑RUST_LOG=trace cargo build -v,你会看到发生了什么:

TRACE:cargo::ops::cargo_read_manifest: looking for root package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master, source_id=https://github.com/kteza1/rust-mosquitto#7e08a291
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master
TRACE:cargo::ops::cargo_read_manifest: read_package; path=/Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/Cargo.toml; source-id=https://github.com/kteza1/rust-mosquitto#7e08a291
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/.git
TRACE:cargo::ops::cargo_read_manifest: not processing /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/.git
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/examples
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/examples/c-mosquitto
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/examples/ticktock
TRACE:cargo::ops::cargo_read_manifest: read_package; path=/Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/examples/ticktock/Cargo.toml; source-id=https://github.com/kteza1/rust-mosquitto#7e08a291
DEBUG:cargo: handle_error; err=CliError { error: ChainedError { error: Unable to update https://github.com/kteza1/rust-mosquitto, cause: Could not find `Cargo.toml` in `/Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/rust-mosquitto` }, unknown: false, exit_code: 101 }
Run Code Online (Sandbox Code Playgroud)

然后,Cargo尝试确保嵌套Cargo.toml可以满足所有依赖项.

  • @tez:因为你在*三个*目录中,当存储库中只有***时.您实际上要求使用名称`rust-mosquitto`和*其他*来检查您的存储库*. (2认同)

Yvo*_*nzi 5

这并没有具体回答@tez 提出的问题,但我遇到了相同的错误,但根本原因略有不同。我正在用 vim 编写一些简单的代码,所以我创建了一个简单的 main.rs 文件。当我cargo run它时,它吐出同样的错误:

错误:Cargo.toml/Users/yvonmanzi/Documents/Rust或任何父目录中找不到

令人惊讶的是,当然,没有事后诸葛亮,rustc main.rs按预期创建二进制可执行文件,而cargo run没有。原来我一直在使用创造了我所有的锈包(又名项目)到这一点cargo new project-name --bin,如图在这里,因此在默认情况下,包括Cargo.lockCargo.toml,和src文件夹。希望现在很清楚,我的只是一个简单的新手错误;我只是,从字面上看,Cargo.toml我的项目文件夹中没有。所以,亲爱的新手联盟 Rustacean,如果您遇到同样的错误,请使用cargo new project-name --bin命令创建您的项目。