Rust入坑指南:坑主駕到
歡迎大家和我一起入坑Rust,以後我就是坑主,我主要負責在前面挖坑,各位可以在上面看,有手癢的也可以和我一起挖。這個坑到底有多深?我也不知道,我是抱著有多深就挖多深的心態來的,下面我先跳了,各位請隨意。
Rust簡介
眾所周知,在程式語言中,更易讀的高階語言和控制底層資源的低階語言是一對矛盾體。Rust想要挑戰這一現狀,它嘗試為開發者提供更好的體驗的同時給予開發者控制底層細節的許可權(比如記憶體使用)。
低階語言在開發過程中很容易出現各種細微的錯誤,它們難以發現但是可能影響巨大。其他大部分低階語言只能靠覆蓋面更廣的測試用例和經驗豐富的開發者來解決這些問題。而Rust則依靠嚴格的編譯器來杜絕這些問題。
Ps:以後會見識到Rust編譯器的「厲害」
Rust的一些工具:
- Cargo,依賴包的管理和構建工具,可以幫你減輕新增、編譯和管理依賴包的痛苦
- Rustfmt,用於保證開發者程式碼風格的一致性
- Rust語言伺服器支援整合IDE(我用的是IDEA)
安裝Rust
如果你的作業系統是Linux或macOS,在終端執行命令
$ curl https://sh.rustup.rs -sSf | sh
複製程式碼
安裝過程中的選項使用預設就好(一路回車),直到出現以下資訊時,表示安裝成功。
Rust is installed now. Great!
複製程式碼
安裝指令碼會自動把Rust新增到環境變數PATH中,可以重啟終端或者手動執行命令使新增生效。
$ source $HOME/.cargo/env
複製程式碼
當然也可以新增到你的.bash_profile檔案中:
$ export PATH="$HOME/.cargo/bin:$PATH"
複製程式碼
最後,執行以下命令來檢查Rust是否安裝成功
$ rustc --version
複製程式碼
另外,當你嘗試編譯Rust程式碼,但報了linker不可執行的錯誤時,你需要手動安裝一個linker,C編譯器通常會包含正確的linker。Rust的一些公共包也會依賴C語言程式碼和編譯器。所以最好現在安裝一個。
IDEA整合Rust
IDEA中整合Rust也很簡單,只需要在Preference->Plugins中搜索Rust,安裝Rust外掛後重啟IDEA就可以了。
Hello World
又到了經典的Hello World時間,這次我不想直接一個簡單的print就結束了,我們一開始提到了Cargo是Rust依賴包的管理工具,所以我想體驗一下Cargo的用法。
首先新建一個專案,可以直接用在IDEA中new project,也可以使用Cargo命令
cargo new hello-world
cd hello-world
複製程式碼
新建好專案以後,它的結構長這樣子
其中
- main.rs是我們程式碼的入口檔案
- Cargo.toml是記錄Rust元資料的檔案,包括依賴。
- Cargo.lock是記錄增加依賴log的檔案,不能手動修改。
接著我們在Cargo.toml檔案中新增我們需要的依賴
[dependencies]
ferris-says = "0.1"
複製程式碼
這時IDEA會自動安裝依賴包,如果沒有安裝,也可以手動執行命令來安裝
cargo build
複製程式碼
依賴安裝好以後,就可以開始寫程式碼了:
use ferris_says::say;
use std::io::{stdout,BufWriter};
fn main() {
let stdout = stdout();
let out = b"Hello World!";
let width = 12;
let mut writer = BufWriter::new(stdout.lock());
say(out,width,&mut writer).unwrap();
}
複製程式碼
執行結果
----------------
| Hello World! |
----------------
\
\
_~^~^~_
\) / o o \ (/
'_ - _'
/ '-----' \
複製程式碼
沒錯,這是一個小螃蟹,至於它是誰,來看看官方解釋
Ferris is the unofficial mascot of the Rust Community. Many Rust programmers call themselves “Rustaceans,” a play on the word “crustacean.” We refer to Ferris with the pronouns “they,” “them,” etc.,rather than with gendered pronouns.
Ferris is a name playing off of the adjective,“ferrous,” meaning of or pertaining to iron. Since Rust often forms on iron,it seemed like a fun origin for our mascot’s name!
You can find more images of Ferris on rustacean.net/.
關於toml檔案可能有些讀者不太熟悉(其實我自己也不太熟),這裡簡單介紹一下吧,它的全稱是「Tom's Obvious,Minimal Language」,是一種配置檔案格式。它的語義是比較明顯的,因此易於閱讀。同時格式可以明確的對映到hash表,所以也可以被多種語言輕鬆解析。
GitHub地址是:github.com/toml-lang/t…
有興趣的同學可以做更深入的瞭解。
後記
至此,我確信自己已經跳進來了,有想跟進的朋友記得關注我哦。