Cargo 創(chuàng)建一個(gè)新包

2021-09-27 13:39 更新

創(chuàng)建一個(gè)新項(xiàng)目

要使用 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)行速度更快.


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)