Rust入坑指南:坑主駕到

歡迎大家和我一起入坑Rust,以后我就是坑主,我主要負責(zé)在前面挖坑,各位可以在上面看,有手癢的也可以和我一起挖。這個坑到底有多深?我也不知道,我是抱著有多深就挖多深的心態(tài)來的,下面我先跳了,各位請隨意。

Rust簡介

眾所周知,在編程語言中,更易讀的高級語言和控制底層資源的低級語言是一對矛盾體。Rust想要挑戰(zhàn)這一現(xiàn)狀,它嘗試為開發(fā)者提供更好的體驗的同時給予開發(fā)者控制底層細節(jié)的權(quán)限(比如內(nèi)存使用)。

低級語言在開發(fā)過程中很容易出現(xiàn)各種細微的錯誤,它們難以發(fā)現(xiàn)但是可能影響巨大。其他大部分低級語言只能靠覆蓋面更廣的測試用例和經(jīng)驗豐富的開發(fā)者來解決這些問題。而Rust則依靠嚴格的編譯器來杜絕這些問題。

Ps:以后會見識到Rust編譯器的「厲害」

Rust的一些工具:

  • Cargo,依賴包的管理和構(gòu)建工具,可以幫你減輕添加、編譯和管理依賴包的痛苦
  • Rustfmt,用于保證開發(fā)者代碼風(fēng)格的一致性
  • Rust語言服務(wù)器支持集成IDE(我用的是IDEA)

安裝Rust

如果你的操作系統(tǒng)是Linux或macOS,在終端執(zhí)行命令

$ curl https://sh.rustup.rs -sSf | sh

安裝過程中的選項使用默認就好(一路回車),直到出現(xiàn)以下信息時,表示安裝成功。

Rust is installed now. Great!

安裝腳本會自動把Rust添加到環(huán)境變量PATH中,可以重啟終端或者手動執(zhí)行命令使添加生效。

$ source $HOME/.cargo/env

當(dāng)然也可以添加到你的.bash_profile文件中:

$ export PATH="$HOME/.cargo/bin:$PATH"

最后,執(zhí)行以下命令來檢查Rust是否安裝成功

$ rustc --version

另外,當(dāng)你嘗試編譯Rust代碼,但報了linker不可執(zhí)行的錯誤時,你需要手動安裝一個linker,C編譯器通常會包含正確的linker。Rust的一些公共包也會依賴C語言代碼和編譯器。所以最好現(xiàn)在安裝一個。

IDEA集成Rust

IDEA中集成Rust也很簡單,只需要在Preference->Plugins中搜索Rust,安裝Rust插件后重啟IDEA就可以了。

Hello World

又到了經(jīng)典的Hello World時間,這次我不想直接一個簡單的print就結(jié)束了,我們一開始提到了Cargo是Rust依賴包的管理工具,所以我想體驗一下Cargo的用法。

首先新建一個項目,可以直接用在IDEA中new project,也可以使用Cargo命令

cargo new hello-world
cd hello-world

新建好項目以后,它的結(jié)構(gòu)長這樣子

rust-new-project

其中

  • main.rs是我們代碼的入口文件
  • Cargo.toml是記錄Rust元數(shù)據(jù)的文件,包括依賴。
  • Cargo.lock是記錄增加依賴log的文件,不能手動修改。

接著我們在Cargo.toml文件中添加我們需要的依賴

[dependencies]
ferris-says = "0.1"

這時IDEA會自動安裝依賴包,如果沒有安裝,也可以手動執(zhí)行命令來安裝

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();
}

執(zhí)行結(jié)果

----------------
| 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/.

關(guān)于toml文件可能有些讀者不太熟悉(其實我自己也不太熟),這里簡單介紹一下吧,它的全稱是「Tom's Obvious, Minimal Language」,是一種配置文件格式。它的語義是比較明顯的,因此易于閱讀。同時格式可以明確的映射到hash表,所以也可以被多種語言輕松解析。

GitHub地址是:https://github.com/toml-lang/toml

有興趣的同學(xué)可以做更深入的了解。

后記

至此,我確信自己已經(jīng)跳進來了,有想跟進的朋友記得關(guān)注我哦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容