Visual studio code 为了使Visual Studio代码支持所有功能,工作区根目录下的Cargo.toml文件中应该包含哪些内容?

Visual studio code 为了使Visual Studio代码支持所有功能,工作区根目录下的Cargo.toml文件中应该包含哪些内容?,visual-studio-code,rust,Visual Studio Code,Rust,Visual Studio代码说明: Cargo.toml文件必须位于工作区的根目录下,以便 支持所有功能 但是,我没有找到位于工作区根目录中的Cargo.toml文件中应该包含的内容。它对所有项目子目录都通用吗 我已经阅读了文档的最后部分,但它只涉及项目目录中的Cargo.toml文件 通过实验,我发现只有一行的文件[workspace]会使VS代码注释消失,但现在每次我设置一个新项目时,它都会让我担心,这个“workspace”Cargo.toml中的成员数组中没有提到这个项目 Visual

Visual Studio代码说明:

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

但是,我没有找到位于工作区根目录中的Cargo.toml文件中应该包含的内容。它对所有项目子目录都通用吗

我已经阅读了文档的最后部分,但它只涉及项目目录中的Cargo.toml文件

通过实验,我发现只有一行的文件
[workspace]
会使VS代码注释消失,但现在每次我设置一个新项目时,它都会让我担心,这个“workspace”Cargo.toml中的成员数组中没有提到这个项目

VisualStudio代码目录结构如下

workspace
  |
  ---> project1
  |
  ---> project2
cargo new project3
在新创建的project3目录中生成cargo.toml,但Visual Studio代码要求在工作区目录本身中生成另一个cargo.toml

本节将对此进行介绍。Cargo工作区根目录下的Cargo.toml应在
members
属性中显式包含其成员项目。请注意,这正是IDE建议您做的

[workspace]
members = [
    "project1",
    "project2",
]
引述:

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

文件名:Cargo.toml

[workspace]

members = [
    "adder",
]
接下来,我们将通过在add目录中运行
cargo new
来创建加法器二进制板条箱:

$cargo新-箱加法器 创建二进制(应用程序)
加法器
项目

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

├── 货锁
├── 货舱
├── 加法器
│   ├── 货舱
│   └── src
│       └── 梅因
└── 目标
在野外的另一个例子是()

提供了有关
成员
字段的其他详细信息,包括自动包含路径依赖项

工作区的根板条箱(由其清单中的
[workspace]
指示)负责定义整个工作区。位于工作区目录中的所有
path
依赖项都将成为成员。您可以通过在
members
键中列出其他包来向工作区添加它们。请注意,显式列出的工作区成员的路径依赖关系也将包含在工作区中。[……]


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

作为一种解决方法,我能够创建一个顶级Cargo.toml,其中包含以下内容:

[workspace]
members = [
    "./*/src/..",
]
这样,我就可以在工作区下创建新项目,而无需显式更新顶级Cargo.html


需要注意的是,像
“*”
“/*”
“*/”
这样的更明显的全局变量不起作用,因为结果匹配必须是包含Cargo.toml文件的目录,并且这些全局变量的匹配程度要高于这些全局变量(例如包括“/target/”)。我找到的路径结果是正确的子集(至少在基本的、典型的情况下)。

of@Shepmaster我理解这是一个愚蠢的问题,但您的链接没有帮助,因为它只描述项目的Cargo.toml文件,而不是工作区目录中的文件。我在问题中已经说得更清楚了,但它也包含在原始版本中。请先阅读问题文本,然后再对其进行否决表决。你真的有问题吗?我相信这个消息是指VS代码工作区。这个问题似乎没有表现出任何关于您尝试了什么、什么不起作用等等的努力。好吧,没有什么可以尝试的,我已经将Cargo.toml文件放在了工作区根目录下,但我仍然不明白它是为了什么。为什么您认为我否决了这个问题?正是这种假设/指责使得堆栈溢出上的人不太可能留下评论,导致人们在不留下评论的情况下投票。谢谢,这正是我一直在寻找的文档。我是否理解正确,每当我想在工作区中包含新项目时,都应该手动编辑此文件?@gorn这是正确的,除非新项目是工作区其他成员的路径依赖项。我已经用这些细节更新了答案。整个工作区系统以及它们如何连接到Cargo.toml文件让我感到困惑,但你帮助我开始了,谢谢。@gorn好吧,工作区可能不是你想要的。它们是专门用来存放同一项目中的多个板条箱的。如果您恰好在同一个文件夹中保留了多个独立的Rust程序,那么通常不需要一个工作区。这可能是真的。如果VS代码没有对单个板条箱目录之外不存在的Cargo.toml唠叨我,我就永远不会提出这个问题。这是VSC的UI缺陷比其他任何东西都多。。。