I am new to Rust and attempting to build a test project with Cargo. My Cargo.toml
looks like:
[package]
name = "rust-play"
version = "0.0.1"
authors = [ "Bradley Wogsland <omitted>" ]
(but the actual TOML file doesn't omit my email). When I cargo build
I am getting the following error:
error: failed to parse manifest at
/Users/wogsland/Projects/rust-play/Cargo.toml
Caused by: no targets specified in the manifest either src/lib.rs, src/main.rs, a [lib] section, or [[bin]] section must be present
My main
function is in a src/test.rs
file. Do I need to specify that in the TOML file? If so, how? I tried adding
target = "src/test.rs"
to no avail.
As the error says:
either
src/lib.rs
,src/main.rs
, a[lib]
section, or[[bin]]
section must be present
So the direct answer is to add a [[bin]]
section:
[[bin]]
name = "test"
path = "src/test.rs"
However, it's far more usual to just place the file in the expected location: src/main.rs
. You could also place it in src/bin/test.rs
if you plan on having multiple binaries.
If it's actually for testing your code, then unit tests go in the same file as the code they are testing and integration tests go in tests/foo.rs
.
Alternative issue and solution: You can also be faced with this error if you have copied Cargo.toml
file to a parent folder of the crate.
I ran into this issue on Ubuntu 20.04 after having inadvertently copied Cargo.toml
to my home folder. Even though my working directory had a properly defined Cargo.toml
, the copy in $HOME
was taking precedence and causing builds to fail.
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