Hello,World!
mkdir -p ~/IdeaProjects/rust-projects
cd ~/IdeaProjects/rust-projects
mkdir hello-world
cd hello-world
vim main.rs
- main.rs 內(nèi)容
fn main() {
// println! 調(diào)用了一個 Rust 宏(macro)。如果是調(diào)用函數(shù),則應(yīng)輸入 println(沒有!)。
// "Hello, world!" 是一個字符串。我們把這個字符串作為一個參數(shù)傳遞給 println!,字符串將被打印到屏幕上。
// 該行以分號結(jié)尾(;),這代表一個表達(dá)式的結(jié)束和下一個表達(dá)式的開始。大部分 Rust 代碼行以分號結(jié)尾。
println!("Hello, world!");
}
# 編譯
rustc main.rs
# 運行
./main
# 輸出 Hello, world!
Hello,Cargo!
Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器。大多數(shù) Rustacean 們使用 Cargo 來管理他們的 Rust 項目,因為它可以為你處理很多任務(wù),比如構(gòu)建代碼、下載依賴庫并編譯這些庫。(我們把代碼所需要的庫叫做 依賴(dependencies))。
- 檢查cargo是否正確安裝
cargo --version
cd ~/IdeaProjects/rust-projects
# 使用cargo創(chuàng)建項目
cargo new hello-cargo
cd hello-cargo
# 構(gòu)建
cargo build
# 運行
./target/debug/hello-cargo
# 輸出 Hello, world!
我們剛剛使用 cargo build 構(gòu)建了項目,并使用 ./target/debug/hello_cargo 運行了程序,也可以使用 cargo run 在一個命令中同時編譯并運行生成的可執(zhí)行文件。
Cargo 還提供了一個叫 cargo check 的命令。該命令快速檢查代碼確保其可以編譯,但并不產(chǎn)生可執(zhí)行文件。
- 文件Cargo.toml內(nèi)容:
[package]
name = "hello-cargo"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
第一行,[package],是一個片段(section)標(biāo)題,表明下面的語句用來配置一個包。隨著我們在這個文件增加更多的信息,還將增加其他片段(section)。
接下來的四行設(shè)置了 Cargo 編譯程序所需的配置:項目的名稱、版本、作者以及要使用的 Rust 版本。Cargo 從環(huán)境中獲取你的名字和 email 信息,所以如果這些信息不正確,請修改并保存此文件。附錄 E 會介紹 edition 的值。
最后一行,[dependencies],是羅列項目依賴的片段的開始。在 Rust 中,代碼包被稱為 crates。這個項目并不需要其他的 crate。
- 發(fā)布(release)構(gòu)建
當(dāng)項目最終準(zhǔn)備好發(fā)布時,可以使用 cargo build --release 來優(yōu)化編譯項目。這會在 target/release 而不是 target/debug 下生成可執(zhí)行文件。這些優(yōu)化可以讓 Rust 代碼運行的更快,不過啟用這些優(yōu)化也需要消耗更長的編譯時間。這也就是為什么會有兩種不同的配置:一種是為了開發(fā),你需要經(jīng)??焖僦匦聵?gòu)建;另一種是為用戶構(gòu)建最終程序,它們不會經(jīng)常重新構(gòu)建,并且希望程序運行得越快越好。如果你在測試代碼的運行時間,請確保運行 cargo build --release 并使用 target/release 下的可執(zhí)行文件進(jìn)行測試。