首页 > 解决方案 > 当我使用 rustc 编译时,为什么会出现在 Cargo.toml 中列为依赖项的“找不到 crate”?

问题描述

我的 Cargo.toml 包括:

[dependencies]
chrono = "0.4"

我的代码包括:

extern crate chrono;
use chrono::{Duration, DateTime, Utc};

然而,当我运行我的代码时,我得到了这个错误:

error[E0463]: can't find crate for `chrono`
 --> src/lib.rs:1:1
  |
1 | extern crate chrono;
  | ^^^^^^^^^^^^^^^^^^^^ can't find crate

我正在做一个锻炼练习,所以我构建/运行程序的方式是rustc src/lib.rs测试我的解决方案。问题是因为我没有跑步rustc src/main.rs吗?

标签: rustrust-cargo

解决方案


当您直接运行rustc时,编译器只知道命令行参数。它对 , 特别是一无所知Cargo.toml,因此它不知道在哪里寻找chrono库。

要使用依赖管理,您必须使用 Cargo 编译您的项目 - 只需使用cargo build/ cargo run/ cargo test,一切都应该没问题。详见本书

但是,如果您想(出于某种原因)rustc直接使用,我建议您先检查一下cargo,使用cargo build --verbose. 它将显示所有调用的命令,允许您检查要手动定义的可能参数。


推荐阅读