我创建了一个简单的 hello world 程序:
fn main() {
println!("Hello, world");
}
编译代码时使用rustc
vs cargo build
,货物命令显得较慢。它需要1.6s for cargo build
vs 1s for rustc
。请参阅屏幕截图右侧的时间戳。
为什么是这样?为什么我仍然应该使用货物?
As 帕维尔·斯特拉霍夫说 https://stackoverflow.com/users/344347/pavel-strakhov
Cargo 不是编译器,而是包管理器。它运行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
为什么我还要使用cargo
上面的输出显示了一个原因:查看传递给的所有参数rustc
。你知道他们每个人的作用是什么吗?你want知道吗? Cargo 抽象了一些细节,让您可以专注于代码。
货运也有不仅仅是调用编译器。对大多数人来说最大的好处就是根据版本管理您的依赖项 http://doc.crates.io/specifying-dependencies.html并允许也发布你自己的箱子 http://doc.crates.io/crates-io.html。它还允许构建脚本 http://doc.crates.io/build-script.html它在主编译之前运行。它有简单的方法运行你的测试 http://doc.crates.io/guide.html#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!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)