我创建了一个简单的hello world程序:
fn main() {
println!("Hello, world");
}
Run Code Online (Sandbox Code Playgroud)
使用rustcvs 编译代码时cargo build,cargo命令显示较慢.它需要1.6秒为cargo buildVS 1S的rustc.请参阅屏幕截图右侧的时间戳.
为什么是这样?我为什么还要用货?
She*_*ter 19
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
Run Code Online (Sandbox Code Playgroud)
我为什么还要用货
上面的输出显示了一个原因:查看传递给的所有参数rustc.你知道他们每个人做了什么吗?你想知道吗?Cargo将一些细节抽象出来,让您专注于代码.
Cargo也不仅仅是调用编译器.对大多数人来说,最大的好处是它可以根据版本管理您的依赖项,并允许发布您自己的包.它还允许在主编译之前运行的构建脚本.它有简单的方法来运行您的测试和示例.
更直接有用,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!
Run Code Online (Sandbox Code Playgroud)