Rust是mozilla推出的一款系統級的編程語言,其兩大特色在於零開銷抽象和安全性。
在大學裏時候,就開始注意到rust語言的動態了。
當時,我在啃一本大塊頭的C++書籍《C++ Primer》,以爲rust到處針對到了C++的痛處。
學習rust,即可以讓你用不輸於C++的特性編程,而又不用花費太多的精力在語法的各類特例和各類細枝末節的坑中。html
優秀的程序員都須要掌握多語言以學習不一樣的思惟方式。對於系統級語言,rust是至關優秀的,
最近趁着有點時間,得好好學習一下這門我垂誕已久的語言了。java
<!--more-->git
在大學裏時候,就開始注意到rust語言的動態了。當時,我在啃一本大塊頭的C++書籍《C++ Primer》。程序員
C++是至關難學,其中是由於其由於歷史遺留緣由及與C的兼容性,致使語法正交性、統一性差,
要學習的語法點及要避免的踩坑點至關之多,乃至於一部分同窗都是「C++從入門到放棄」了。(我也是)
而剩下一部分說用C++的同窗,其實是C with class,不敢用過高級的特性,怕hold不住。。。github
相似於C++,Rust的定位是一款系統級語言,所以,它具備C++做爲系統級語言的全部特色:編程
除此以外,除了擁有C++優勢外,它還有:安全
從我瞭解到的信息來看,還有如下幾種對標C++的特色,對於一個初學者,目前感覺還不是很大:bash
第一步,安裝rust工具鏈:
官方網站推薦的方式是:curl
curl https://sh.rustup.rs -sSf | sh
這樣,會將rust工具鏈安裝到~/.cargo/bin
目錄下,包括rustc、cargo 及 rustup。編程語言
推薦爬牆下載,我選擇proxychains:
proxychains curl https://sh.rustup.rs -sSf > tmp.sh sh tmp.sh
第二步:安裝IDE。
我推薦使用jetbrains推出的rust插件。找一個jetbrains的IDE安裝就好了。
做爲一名java碼農,我選擇idea。與把大象放入冰箱同樣輕鬆,只需簡單三步:
好了,新建一個項目,你會發現多了一個rust選擇項。
做爲初學者,不要花費過多精力在工具鏈上,首先應該快速搞起一個環境,而後上手語法寫幾個demo。
做爲第一個rust程序,首先來個選擇排序壓壓驚:
fn selection_sort(nums: &mut Vec<i32>) { for i in 0.. nums.len() { let mut min = i; for j in i.. nums.len() { if nums[j] < nums[min] { min = j; } } nums.swap(i, min); } }
rust中的語法不是C系語法,因此熟悉rust的語法須要多多編寫代碼練習。上面代碼涉及到的語法有:
mut
。rust鼓勵使用不可變變量。(1..10)
,它實際上建立了一個Range<i32>
類型的對象並迭代。接下來是將Vector轉字符串的輔助函數:
fn vector_to_string(nums: &Vec<i32>) -> String { let mut s = String::new(); for i in nums.iter() { s += &(i.to_string() + " "); } return s; }
String::new
暗示出,rust中沒有構造函數和new運算符。怎麼建立對象?用靜態工廠函數。+=
操做,這代表Rust支持運算符重載。最後,main函數:
fn main() { let mut v = vec![9, 2, 5, 4, 8, 12, 1]; selection_sort(&mut v); println!("{}", vector_to_string(&v)); }
vec!
其實是一個宏,rust支持強大的宏,強大到相似lisp的那種。&
是引用符,涉及到全部權和借用的概念。對於有着必定基礎的程序員,學習一門語言,我的以爲,最有效率的方式是:
最後,有一些值得學習的資料:
對於編程語言的理解,每一個人有着不一樣的觀點。
就我我的而言,我更贊同《代碼大全》中的隱喻,即編程語言是程序員工具箱中的一把趁手的工具,整體而言,它儘可能使用良好的設計避免給程序員形成額外的負擔,又具有強大的特性使得程序員能夠優雅實現各種需求。包括統一正交的語法、優秀的類型系統、不破壞統一性的適當的語法糖等。