文章目錄
1. linux&macos安裝rust
安裝
curl https://sh.rustup.rs -sSf | sh
這將會安裝rustc, rustup, rustfmt, cargo 等等程序
環境變量
手動將 Rust 加入系統 PATH 變量中:
source $HOME/.cargo/env
或者可以在 ~/.bash_profile 文件中增加如下行:
export PATH="$HOME/.cargo/bin:$PATH"
測試
> rustc --version
rustc 1.39.0 (4560ea788 2019-11-04)
2. hello world
fn main() {
println!("Hello, world!");
}
編譯&運行
> rustc main.rs
> ./main
Hello, world!
3. 初步分析hello world代碼
1,宏:println! 調用了一個 Rust 宏(macro)。如果是調用函數,則應輸入 println(沒有!)
2,函數用fn定義
3,以分號結尾
4,編譯後的二進制包很大2.5M
-rwxrwxrwx. 1 vagrant vagrant 2.5M Dec 17 10:10 main
-rwxrwxrwx. 1 vagrant vagrant 45 Dec 17 10:15 main.rs
4. cargo
構建系統和包管理器
> cargo new cargo
> cd cargo
> cargo build
Compiling cargo v0.1.0 (/vagrant/rust/cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.45s
> ./target/debug/cargo
Hello, world!
cargo build會使 Cargo 在項目根目錄創建一個新文件:Cargo.lock。這個文件記錄項目依賴的實際版本。自己永遠也不需要碰這個文件,讓 Cargo 處理它就行。
構建結果放在target/debug目錄並緩存,再次構建時如果源文件沒有修改,且編譯結果已經緩存,則不用重新構建。
> cat Cargo.lock
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "cargo"
version = "0.1.0"
cargo run
同時編譯並運行生成的可執行文件,如果發現程序編譯過,且有沒有修改,則不用重新編譯
> cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.11s
Running `target/debug/cargo`
Hello, world!
> rm -rf target
> cargo run
Compiling cargo v0.1.0 (/vagrant/rust/cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.21s
Running `target/debug/cargo`
Hello, world!
cargo check
執行編譯前的檢查,速度會比構建快一些,主要是省略了生成可執行文件的步驟
> cargo check
Checking cargo v0.1.0 (/vagrant/rust/cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.67s
額外的優點
不管你使用什麼操作系統,cargo的命令都是一樣的。
5. 發佈
cargo build --release,優化編譯項目,讓rust程序運行的更快,但是需要消耗更長的編譯時間。
優化編譯的構建結果放在./target/release目錄下。
> cargo build --release
Compiling cargo v0.1.0 (/vagrant/rust/cargo)
Finished release [optimized] target(s) in 0.96s
> ./target/release/cargo
Hello, world!
6. 參考鏈接
https://kaisery.github.io/trpl-zh-cn/ch01-03-hello-cargo.html