工作区根目录下的 Cargo.toml 文件中应该包含哪些内容,以便 Visual Studio Code 支持所有功能?

gor*_*orn -2 rust visual-studio-code

Visual Studio Code 说:

Cargo.toml 文件必须位于工作区的根目录以支持所有功能

但是我没有在位于工作区根目录的Cargo.toml 文件中找到什么。所有项目子目录都通用吗?

我已经阅读了你好,货物一章!的文档,但它只讨论了项目目录中的 Cargo.toml 文件。

通过试验,我发现只有一行的文件[workspace]会使 VS Code 注释消失,但是现在每次我设置一个新项目时,它都会让我烦恼这个项目在此的成员数组中没有提到的事实“工作区” Cargo.toml

Visual Studio Code 目录结构如下

workspace
  |
  ---> project1
  |
  ---> project2
Run Code Online (Sandbox Code Playgroud)

cargo new project3新建项目3目录中生成Cargo.toml,但Visual Studio代码预计该工作区目录本身内的另一Cargo.toml。

E_n*_*ate 5

在本书的第 14 章第 3 节中有介绍。Cargo 工作区根目录下的 Cargo.toml 应在members属性中明确包含其成员项目。请注意,这正是 IDE 建议您执行的操作。

[workspace]
members = [
    "project1",
    "project2",
]
Run Code Online (Sandbox Code Playgroud)

引用:

接下来,在 add 目录中,我们创建将配置整个工作区的 Cargo.toml 文件。这个文件不会有[package]我们在其他 Cargo.toml 文件中看到的部分或元数据。相反,它将以[workspace]允许我们通过指定二进制包的路径向工作区添加成员的部分开始;在这种情况下,该路径是加法器:

文件名:Cargo.toml

[workspace]

members = [
    "adder",
]
Run Code Online (Sandbox Code Playgroud)

接下来,我们将通过cargo new在 add 目录中运行来创建 adder binary crate :

$ cargo new --bin adder 创建的二进制(应用)adder项目

此时,我们可以通过运行来构建工作区cargo build。add 目录中的文件应如下所示:

[workspace]
members = [
    "project1",
    "project2",
]
Run Code Online (Sandbox Code Playgroud)

另一个例子是serde ( Cargo.toml )。

货物的文档提供了关于附加的细节members字段,包括路径依赖被自动包括。

工作区的根 crate[workspace]由其清单中的指示,负责定义整个工作区。path驻留在工作区目录中的所有依赖项都成为成员。您可以通过在members键中列出它们来将其他包添加到工作区。请注意,明确列出的工作区成员也将在工作区中包含其路径依赖项。[...]

在这种情况下,根 Cargo 项目中没有声明路径依赖项和成员,导致子目录不被视为工作区成员。