You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cargo工作区中.cargo/config.toml的放置与全局依赖配置方法

问题描述

根据《Cargo Book》3.6配置章节的说明:

从工作区根目录调用cargo时,不会读取工作区内单个包的.cargo/config.toml文件。例如工作区包含mylib和mybin两个包,它们各自的配置文件在根目录调用时不会被加载。

目前官方文档未明确说明工作区全局.cargo/config.toml的放置位置,需求是:指定一个统一目录(比如工作区根目录下的vendoredcode文件夹),让工作区所有包都能从中读取外部依赖的vendored代码。

单个独立包中的配置方式是在包根目录放置.cargo/config.toml,内容如下:

[source.crates-io]
replace-with="vendored-sources"

[source.vendored-sources]
directory="path/to/package/root/vendoredcode"

请问如何在工作区中用单个.cargo/config.toml实现相同效果?

注:统一使用“package(包)”而非“crate”,因为一个包可包含多个二进制crate和一个库crate,以此避免混淆。

解决方案

直接在工作区根目录下创建.cargo/config.toml文件,配置路径时使用相对于工作区根目录的相对路径即可,具体配置内容如下:

[source.crates-io]
replace-with="vendored-sources"

[source.vendored-sources]
directory="./vendoredcode"

原理说明

Cargo会从执行命令的当前目录开始向上递归查找.cargo/config.toml文件,工作区根目录的配置会被所有子包共享:

  • 从工作区根目录执行命令时,直接读取根目录的配置文件;
  • 从子包目录执行命令时,会向上找到根目录的配置文件并加载。

这样就能实现工作区所有包共用同一vendored依赖源的效果。

内容的提问来源于stack exchange,提问作者Keyboard Penman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:50:22