无法解析清单 - 未指定目标

问题描述 投票:18回答:4

我是Rust的新手,并试图用Cargo建立一个测试项目。我的Cargo.toml看起来像:

[package]
name = "rust-play"
version = "0.0.1"
authors = [ "Bradley Wogsland <omitted>" ]

(但实际的TOML文件不会省略我的电子邮件)。当我cargo build我收到以下错误:

错误:无法解析/Users/wogsland/Projects/rust-play/Cargo.toml上的清单

引起:清单中没有指定目标src / lib.rs,src / main.rs,[lib]部分或[[bin]]部分必须存在

我的main函数在src/test.rs文件中。我需要在TOML文件中指定吗?如果是这样,怎么样?我尝试添加

target = "src/test.rs"

无济于事。

rust rust-cargo
4个回答
25
投票

正如错误所说:

src/lib.rssrc/main.rs[lib]部分或[[bin]]部分必须存在

所以直接答案是add a [[bin]] section

[[bin]]
name = "test"
path = "src/test.rs"

但是,将文件放在预期位置更为常见:src/main.rs。如果您计划拥有多个二进制文件,也可以将它放在src/bin/test.rs中。

如果它实际上用于测试您的代码,那么单元测试与他们正在测试的代码在同一个文件中,并且集成测试在tests/foo.rs中。


1
投票

作为总结:

如果你使用cargo new xxx --bin,你会发现src目录中的文件名为main.rs。当你检查文件Cargo.toml。它和你写的一样。所以第一种方法是将src中的文件更改为main.rs

作为货物报告,我们可以使用[[bin]]来设置文件。 @Shepmaster解决了它。

这两种方式都可以起作用。


0
投票

在我的情况下,也可能在你的情况下,rs文件没有命名为main.rs,而Cargo假设src/main.rs是二进制包的箱子根。因此,规则是如果项目是可执行文件,则将主源文件命名为src/main.rs。如果它是库,请将主源文件命名为src/lib.rs

此外,Cargo还会将位于src/bin/*.rs的任何文件视为上一个答案中提到的可执行文件。


0
投票

替代问题和解决方案:如果您已将Cargo.toml文件复制到包的父文件夹,也可能会遇到此错误。

© www.soinside.com 2019 - 2024. All rights reserved.