I'm trying to use the rust-mosquitto library. My current Cargo.toml
is:
[package]
name = "HomeDaemon"
version = "0.1.0"
authors = ["RTR <[email protected]>"]
[dependencies.mosquitto]
git = "https://github.com/kteza1/rust-mosquitto"
When I run cargo build
, following error is reported:
Could not find `Cargo.toml` in `/Users/ravitejareddy/.cargo/git/checkouts/rust-mosquitto-8203e77dcf072bf7/rust-mosquitto`
The actual download in ~/.cargo/git/checkouts/rust-mosquitto-8203e77dcf072bf7/master
shows that Cargo.toml
is present.
There is an extra rust-mosquitto
in the path above, is that a problem?
Cargo. toml and Cargo. lock are stored in the root of your project (package root). Source code goes in the src directory.
Cargo. toml is the manifest file for Rust's package manager, cargo . This file contains metadata such as name, version, and dependencies for packages, which are call "crates" in Rust.
cargo new accepts two flags: --lib, for creating libraries, and --bin, for creating binaries, or executables.
This does not specifically answer the question that @tez asked, but I encountered the same error with a slightly different root culprit. I was writing some simple code in vim, so I created a simple main.rs file. When I cargo run
it, it was spitting out the same error:
error: could not find
Cargo.toml
in/Users/yvonmanzi/Documents/Rust
or any parent directory
The surprising thing, without the hindsight, of course, was that rustc main.rs
was creating a binary executable as expected while cargo run
wasn't. It turns out I had created all my rust packages(aka projects) up to that point using cargo new project-name --bin
as shown here, thus by default including Cargo.lock
, Cargo.toml
, and src
folder. Hopefully, it is clear by now that mine was just a simple rookie mistake; I simply, quite literally, didn't have Cargo.toml
in my project folder. So, dear fellow rooky league Rustacean, if you get the same error, create your project with cargo new project-name --bin
command.
The problem comes from your Cargo.toml
in examples/ticktock:
[dependencies.mosquitto]
version = "*"
path = "../../../rust-mosquitto"
When downloading your project from git, all the subdirectories are scanned for more Cargo.toml
files. If you run RUST_LOG=trace cargo build -v
, you see what's happening:
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 }
Cargo then tries to ensure that the nested Cargo.toml
can have all of the dependencies satisfied.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With