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

Cargo.toml中[dependencies]与[dev-dependencies]的区别及使用疑问

Cargo.toml中[dependencies]与[dev-dependencies]的区别

核心差异

  • [dependencies]:服务于项目的主业务代码(src/目录下的所有代码),是编译、运行项目必须的依赖。这些依赖会被包含在最终发布的二进制文件或库中,且会传递给引用当前项目的下游依赖。
  • [dev-dependencies]:仅在开发环节生效,不会进入最终发布产物,也不会传递给下游。它的生效范围仅限:测试代码(tests/目录)、示例代码(examples/目录)、基准测试(benches/目录),以及编译项目文档时。

你遇到的报错解析

当你将uuid放在dev-dependencies下时:

[package]
# ... 省略其他配置 ...

[dependencies]
# 未声明uuid

[dev-dependencies]
uuid = "1.0.0"

在主代码src/main.rs中引用uuid:

use uuid::Uuid;

fn main() {
    println!("Hello, world!");
}

Cargo会抛出错误:

error[E0432]: unresolved import `uuid`
 --> src/main.rs:1:5
  |
1 | use uuid::Uuid;
  |     ^^^^ use of undeclared crate or module `uuid`

原因很简单:主代码不属于dev-dependencies的生效范围,Cargo不会为它加载dev下的依赖。而把uuid移到[dependencies]后,主代码就能正常识别这个 crate 了。

dev-dependencies的典型适用场景

  • 测试类工具:比如rstest、proptest这类仅在编写测试用例时需要的框架
  • 代码质量工具:像clippy(代码检查)、rustfmt(代码格式化)这类开发辅助工具
  • 示例代码依赖:项目examples/目录下的演示代码用到的第三方包,放在这里不会增加主依赖的体积
  • 文档生成辅助:用于生成或优化项目文档的工具,比如帮助渲染文档示例的 crate
  • 基准测试库:比如criterion这类专门做性能基准测试的工具

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:55:37