我创建了一个简单的hello world程序:
fn main() {
println!("Hello, world");
}
使用rustc
vs cargo build
编译代码时,cargo命令显示较慢。对于cargo build
,rustc
与 1s 需要 1.6s 。请参阅屏幕截图右侧的时间戳。
这是为什么?我为什么还要用货?
答案 0 :(得分:16)
货物不是编译器,它是包管理器。它运行
rustc
并执行一些额外的工作(例如,解析依赖项),因此它不会比裸rustc
更快。
您可以通过运行cargo build --verbose
来自行查看,这会输出货物运行的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
为什么我还要使用货物
上面的输出显示了一个原因:查看传递给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!