rust - 如果 "cargo build"比直接运行 rustc 慢,我为什么要使用 Cargo?

标签 rust rust-cargo

我创建了一个简单的 hello world 程序:

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

当使用 rustccargo build 编译代码时,cargo 命令显得较慢。 cargo build 需要 1.6srustc 需要 1s。请参阅屏幕截图右侧的时间戳。

这是为什么?为什么我还要使用 cargo?

最佳答案

作为Pavel Strakhov said

Cargo is not a compiler, it's a package manager. It runs rustc and does some extra work (e.g. resolves dependencies), so it can't be faster than bare rustc.

您可以通过运行 cargo build --verbose 亲眼看到这一点,它会输出 cargo 运行的 rustc 命令:

$ cargo build --verbose
   Compiling hw v0.1.0 (file:///private/tmp/hw)
     Running `rustc --crate-name hw src/main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=3c693c67d55ff970 -C extra-filename=-3c693c67d55ff970 --out-dir /private/tmp/hw/target/debug/deps -L dependency=/private/tmp/hw/target/debug/deps`
    Finished dev [unoptimized + debuginfo] target(s) in 0.30 secs

Why should I still use cargo

上面的输出显示了一个原因:查看所有传递给 rustc 的参数。你知道他们每个人的作用吗?你知道吗? Cargo 抽象出一些细节,让您专注于代码。

Cargo 还不仅仅是调用编译器。对大多数人来说最大的好处是它manages your dependencies based on versions并允许 publishing your own crates as well .它还允许 build scripts在你的主要编译之前运行。它有简单的方法 running your tests和例子。

更有用的是,Cargo 执行检查以查看是否应该重建:

$ time rustc src/main.rs
0:00.21
$ time rustc src/main.rs
0:00.22

$ time cargo build
0:00.41
$ time cargo build
0:00.09                   # Much better!

关于rust - 如果 "cargo build"比直接运行 rustc 慢,我为什么要使用 Cargo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44483749/

相关文章:

rust - 如何排除在 OS X 上构建文件?

rust - 如何让我的 Rust 程序链接到另一个 glibc?

rust - 使用 Cargo 使较低级别的 crate 在顶部可用

generics - 具有通用参数类型的函数

iterator - 为什么我不能将 Path::new 映射到 std::env::args 迭代器上?

rust - 为什么 Box<dyn Error> 不实现 Error?

rust - 如何使用 Cargo 构建多个二进制文件?

rust - 如何在以惯用的 Rust 方式计算平均值的同时对不同的数字类型执行操作?

multithreading - Rust 程序可以生成的最大线程数是多少?

rust - 如何在#[no_std] 环境中使用 Tokio Reactor?