如果“Cargo build”比直接运行rustc慢,为什么要使用Cargo?

如果“Cargo build”比直接运行rustc慢,为什么要使用Cargo?,rust,rust-cargo,Rust,Rust Cargo,我创建了一个简单的hello world程序: fn main() { println!("Hello, world"); } 使用rustc vs cargo build编译代码时,cargo命令显示得较慢。货物建造需要1.6秒,而rustc需要1秒。请参见屏幕截图右侧的时间戳 为什么会这样?我为什么还要用货 As Cargo不是编译器,而是包管理器。它运行rustc并做一些额外的工作,例如解析依赖项,所以它不能比裸rustc快 您可以通过运行cargo build-verbose亲

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

fn main() {
    println!("Hello, world");
}
使用rustc vs cargo build编译代码时,cargo命令显示得较慢。货物建造需要1.6秒,而rustc需要1秒。请参见屏幕截图右侧的时间戳

为什么会这样?我为什么还要用货

As

Cargo不是编译器,而是包管理器。它运行rustc并做一些额外的工作,例如解析依赖项,所以它不能比裸rustc快

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

$cargo build-详细 编制hw v0.1.0file:///private/tmp/hw 运行'rustc-cratename hw src/main.rs-cratetype 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` 在0.30秒内完成开发[未优化+调试信息]目标 我为什么还要用货

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

Cargo也不仅仅是调用编译器。对大多数人来说,最大的好处是它允许和允许。它还允许在主编译之前运行。它有简单的方法和例子

Cargo会执行一项检查,查看您是否需要重建,这一点更为直接有用:

$time rustc src/main.rs 0:00.21 $time rustc src/main.rs 0:00.22 $time货物建造 0:00.41 $time货物建造 0:00.09好多了!
难道你不能在你几乎看不懂的图像中键入什么吗?cargo不是一个编译器,它是一个包管理器。它运行rustc并做一些额外的工作,例如解析依赖项,所以它不能比bare-rustc更快。@Rob我添加了这两项所花费的时间。如果您还需要什么,请告诉我。@Pavel Strakhov,谢谢。这就是我一直在寻找的,就像在问为什么我应该使用make而gcc更快。。。