要使用 Cargo 啟動(dòng)新項(xiàng)目,請(qǐng)使用cargo new:
$ cargo new hello_world --bin
我們傳遞--bin,是因?yàn)槲覀冋谥谱饕粋€(gè)二進(jìn)制程序(默認(rèn)): 如果我們正在創(chuàng)建一個(gè)庫(lib),我們就會(huì)把傳遞--lib。默認(rèn)情況下,這個(gè)目錄會(huì)初始化為一個(gè)新的git存儲(chǔ)庫,如果您不希望它這樣做,請(qǐng)傳遞--vcs none。
讓我們來看看 Cargo 為我們帶來了什么:
$ cd hello_world
$ tree .
.
├── Cargo.toml
└── src
└── main.rs
1 directory, 2 files
這就是我們開始所需要的一切首。先讓我們看看Cargo.toml:
[package]
name = "hello_world"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2018"
[dependencies]
這被稱為一個(gè)manifest元清單,它包含了 Cargo 編譯項(xiàng)目所需的所有元數(shù)據(jù).
那src/main.rs有啥.
fn main() {
println!("Hello, world!");
}
Cargo 為我們創(chuàng)造了一個(gè)"hello_world".我們來編譯它:
$ cargo build
Compiling hello_world v0.1.0 (file:///path/to/project/hello_world)
然后運(yùn)行它:
$ ./target/debug/hello_world
Hello, world!
我們也可以直接使用cargo run,它會(huì)自行編譯,然后運(yùn)行它, 一步到位:
$ cargo run
Fresh hello_world v0.1.0 (file:///path/to/project/hello_world)
Running `target/hello_world`
Hello, world!
您會(huì)注意到已創(chuàng)建了幾個(gè)新文件和目錄:
$ tree .
.
|-- Cargo.lock
|-- Cargo.toml
|-- src
| `-- main.rs
`-- target
`-- debug
|-- build
|-- deps
| |-- hello_world-6ad0b2df81336e7f
| |-- hello_world-6ad0b2df81336e7f.d
| `-- hello_world-6ad0b2df81336e7f.dSYM
| `-- Contents
| |-- Info.plist
| `-- Resources
| `-- DWARF
| `-- hello_world-6ad0b2df81336e7f
|-- examples
|-- hello_world
|-- hello_world.d
|-- hello_world.dSYM -> deps/hello_world-6ad0b2df81336e7f.dSYM
|-- incremental
| // ...
`-- native
15 directories, 19 files
這個(gè)Cargo.lock文件啊,是包含我們的依賴項(xiàng)的有關(guān)信息(即便還沒有依賴),其內(nèi)容看起來可不是很有趣啊。再有就是target目錄包含所有構(gòu)建產(chǎn)品(二進(jìn)制文件..),并且,可以看出,Cargo 默認(rèn)生成調(diào)試(debug)版本。您可以使用cargo build --release,這會(huì)在開啟優(yōu)化的情況下,編譯文件:
$ cargo build --release
Compiling hello_world v0.1.0 (file:///path/to/project/hello_world)
cargo build --release將結(jié)果二進(jìn)制文件放入target/release,而不再是target/debug目錄.
調(diào)試模式的編譯是開發(fā)的默認(rèn)設(shè)置 - 編譯時(shí)間較短,因?yàn)榫幾g器不進(jìn)行優(yōu)化,但代碼運(yùn)行速度較慢。發(fā)布(release)模式編譯需要更長時(shí)間,但代碼運(yùn)行速度更快.
更多建議: