參考書目:https://rustlang-cn.org/office/rust/book/getting-started/ch01-00-getting-started.html
開始學習rust,記錄一下自己的學習內容,全程只記錄Mac環(huán)境下的操作。
本文主要記錄:
- 在macOS安裝 Rust
- 編寫一個打印 Hello, world! 的程序
- 使用 Rust 的包管理器和構建系統(tǒng) cargo
一、安裝
- 在macOS 上安裝 rustup
打開終端并輸入如下命令:
$ curl https://sh.rustup.rs -sSf | sh
這個命令等的時間可能會比較久,耐心一點。
接著出現下面的三個選項,選擇1,默認安裝就好了。
You can uninstall at any time with rustup self uninstall and these changes will
be reverted.
Current installation options:
default host triple: x86_64-apple-darwin
default toolchain: stable
modify PATH variable: yes
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1
此命令下載一個腳本并開始安裝 rustup 工具,這會安裝最新穩(wěn)定版 Rust。
如果安裝成功,將會出現如下內容:
Rust is installed now. Great!
To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH
environment variable. Next time you log in this will be done automatically.
To configure your current shell run source $HOME/.cargo/env
按照上述提示,還要將Rust 加入系統(tǒng) PATH 環(huán)境變量中,在下一次登錄時生效
兩種方式,任選其一即可:
- 不重啟終端,在 shell 中直接運行如下命令,手動將 Rust 加入系統(tǒng) PATH 變量中
上述提示中是給的這種方式,比較便捷。
$ source $HOME/.cargo/env
2.可以在 ~/.bash_profile 文件中增加如下行:
$ export PATH="$HOME/.cargo/bin:$PATH"
《另外,你需要一個某種類型的鏈接器(linker)。很有可能已經安裝,不過當你嘗試編譯 Rust 程序時,卻有錯誤指出無法執(zhí)行鏈接器,這意味著你的系統(tǒng)上沒有安裝鏈接器,你需要自行安裝一個。C 編譯器通常帶有正確的鏈接器。請查看你使用平臺的文檔,了解如何安裝 C 編譯器。并且,一些常用的 Rust 包依賴 C 代碼,也需要安裝 C 編譯器。因此現在安裝一個是值得的。》---這里不太懂。
- 更新和卸載
通過 rustup 安裝了 Rust 之后,很容易更新到最新版本。在 shell 中運行如下更新腳本:
$ rustup update
為了卸載 Rust 和 rustup,在 shell 中運行如下卸載腳本(這個命令現在可以不用執(zhí)行,不然又要重新安裝一遍了。。。):
$ rustup self uninstall
- 故障排除(Troubleshooting)
要檢查是否正確安裝了 Rust,打開 shell 并運行如下行:
$ rustc --version
你應能看到已發(fā)布的最新穩(wěn)定版的版本號、提交哈希和提交日期,顯示為如下格式:
rustc x.y.z (abcabcabc yyyy-mm-dd)
如果出現這些內容,Rust 就安裝成功了!
沒有成功的,注意檢查一下配置環(huán)境變量那一步有沒有正確執(zhí)行。
如果有問題,可以求助:最簡單的是 irc.mozilla.org 上的 #rust IRC 頻道 ,可以使用 Mibbit 來訪問它。然后就能和其他 Rustacean(Rust 用戶的稱號,有自嘲意味)聊天并尋求幫助。其它給力的資源包括用戶論壇和 Stack Overflow。
二、編寫一個打印 Hello, world! 的程序
安裝好了 Rust,我們來編寫第一個 Rust 程序。掌握用rust語言在屏幕上打印 Hello, world!
注意:本書假設你熟悉基本的命令行操作。Rust 對于你的編輯器、工具,以及代碼位于何處并沒有特定的要求,如果你更傾向于使用集成開發(fā)環(huán)境(IDE),而不是命令行,請盡管使用你喜歡的 IDE。目前很多 IDE 已經不同程度的支持 Rust;查看 IDE 文檔了解更多細節(jié)。最近,Rust 團隊已經致力于提供強大的 IDE 支持,而且進展飛速!
- 創(chuàng)建項目目錄
首先創(chuàng)建一個存放 Rust 代碼的目錄。建議在home目錄下創(chuàng)建 projects 目錄。
打開終端并輸入如下命令創(chuàng)建 projects 目錄,并在 projects 目錄中為 Hello, world! 項目創(chuàng)建一個目錄。
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
- 編寫并運行 Rust 程序
1. 新建源文件:main.rs
$ touch main.rs
Rust 源文件總是以 .rs 擴展名結尾。
注意:如果文件名包含多個單詞,使用下劃線分隔它們。例如命名為
hello_world.rs,而不是helloworld.rs。
2. 打開main.rs 文件,輸入示例 1-1 中的代碼。
1)打開文件:
$ vi main.rs
2)輸入示例1-1中的代碼
示例 1-1: 一個打印 Hello, world! 的程序
fn main() {
println!("Hello, world!");
}
3)保存文件,并回到終端窗口。
3. 編譯并運行文件
在終端窗口的~/projects目錄下輸入下列命令,編譯和運行文件
$ rustc main.rs
$ ./main
運行成功,會輸出:
Hello, world!
如果沒有看到這些輸出,回到 “故障排除” 部分查找尋求幫助的方法。
如果 Hello, world! 出現了,恭喜你!你已經正式編寫了一個 Rust 程序?,F在你成為一名 Rust 程序員,歡迎!
- 分析 Rust 程序
幾個要注意的點:
Rust 的縮進風格使用 4 個空格,而不是 1 個制表符(tab)。
println! 調用了一個 Rust 宏(macro)。如果是調用函數,則應輸入 println(沒有!)。當看到符號 ! 的時候,就意味著調用的是宏而不是普通函數。
編譯和運行是彼此獨立的步驟
在運行 Rust 程序之前,必須先使用 Rust 編輯器編譯它,即輸入 rustc 命令并傳入源文件名稱,如$ rustc main.rs。編譯成功后,Rust 會輸出一個二進制的可執(zhí)行文件。
三、使用 Rust 的包管理器和構建系統(tǒng) cargo
Cargo 是 Rust 的構建系統(tǒng)和包管理器。大多數 Rustacean 們使用 Cargo 來管理他們的 Rust 項目,因為它可以為你處理很多任務,比如構建代碼、下載依賴庫并編譯這些庫。(我們把代碼所需要的庫叫做 依賴(dependencies))。
最簡單的 Rust 程序,比如我們剛剛編寫的,沒有任何依賴。所以如果使用 Cargo 來構建 Hello, world! 項目,將只會用到 Cargo 構建代碼的那部分功能。在編寫更復雜的Rust程序時,你將添加依賴項,如果使用Cargo啟動項目,則添加依賴項將更容易。
- 檢查 Cargo
第一部分 “安裝” 的時候,自帶了 Cargo。在終端輸入如下命令檢查是否安裝了 Cargo:
$ cargo --version
如果你看到了版本號,說明已安裝!如果看到類似 command not found 的錯誤,你應該查看相應安裝文檔以確定如何單獨安裝 Cargo。
- 使用 Cargo 創(chuàng)建項目
在終端輸入下面的命令:
- 進入projects 目錄(或者你存放代碼的目錄)。
$ cd ~/properties
- 使用cargo創(chuàng)建項目hello_cargo
新建了名為 hello_cargo 的目錄,同時 Cargo 在一個hello_cargo 目錄中創(chuàng)建了項目文件。
$ cargo new hello_cargo
- 進入項目目錄查看文件
$ cd hello_cargo
$ ll
進入 hello_cargo 目錄并列出文件,看到Cargo生成的項目目錄結構如下:
.
├── Cargo.toml
└── .git/
└── .gitignore
└── src
└── main.rs
一個 Cargo.toml 文件,一個 src 目錄,以及位于 src 目錄中的 main.rs 文件。它也在 hello_cargo 目錄初始化了一個 git 倉庫,以及一個 .gitignore 文件。
現在打開 src/main.rs ,可以看到Cargo 為你生成了一個 Hello World! 程序,正如我們之前編寫的示例 1-1!目前為止,之前項目與 Cargo 生成項目的區(qū)別是 Cargo 將代碼放在 src 目錄,同時項目根目錄包含一個 Cargo.toml 配置文件。
- 分開執(zhí)行命令,構建和運行項目
1)構建
在 hello_cargo 目錄下,輸入下面的命令來構建項目:
$ cargo build
編譯完成后會創(chuàng)建一個可執(zhí)行文件 target/debug/hello_cargo,注意文件位置。
2)運行可執(zhí)行文件:
$ ./target/debug/hello_cargo
- 一個命令中同時編譯并運行項目
可以使用cargo run在一個命令中同時編譯并運行生成的可執(zhí)行文件:
$ cargo run
- 快速檢查代碼
Cargo 還提供了一個叫 cargo check 的命令。該命令快速檢查代碼確保其可以編譯,但并不產生可執(zhí)行文件:
$ cargo check
所以編寫代碼時定期運行 cargo check 確保它們可以編譯。當準備好使用可執(zhí)行文件時才運行 cargo build。
- 發(fā)布(release)構建
當項目最終準備好發(fā)布時,可以使用cargo build --release來優(yōu)化編譯項目。
這會在 target/release 而不是 target/debug 下生成可執(zhí)行文件。
$ cargo build --release