歡迎大家和我一起入坑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 http://rustacean.net/.
關於toml文件可能有些讀者不太熟悉(其實我自己也不太熟),這里簡單介紹一下吧,它的全稱是「Tom's Obvious, Minimal Language」,是一種配置文件格式。它的語義是比較明顯的,因此易於閱讀。同時格式可以明確的映射到hash表,所以也可以被多種語言輕松解析。
GitHub地址是:https://github.com/toml-lang/toml
有興趣的同學可以做更深入的了解。
后記
至此,我確信自己已經跳進來了,有想跟進的朋友記得關注我哦。