我是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"
无济于事。
答案 0 :(得分:25)
正如错误所说:
src/lib.rs
,src/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 :(得分:1)
总结:
如果您使用cargo new xxx --bin
,您会发现src
目录中的文件名为main.rs
。当您检查文件Cargo.toml
时。它和你写的一样。所以第一种方法是将src中的文件更改为main.rs
作为货物报告,我们可以使用[[bin]]
来设置文件。 @Shepmaster解决了它。
这两种方式都有效。
答案 2 :(得分:0)
在我的情况下,也可能在您的情况下,rs文件未命名为main.rs
,而Cargo假定src/main.rs
是二进制包的箱子根。因此,规则是如果项目是可执行文件,则将主源文件命名为src/main.rs
。如果是库,请将主源文件命名为src/lib.rs
。
此外,Cargo还会将src/bin/*.rs
中的任何文件视为上一个答案中提到的可执行文件。