Rust學(xué)習(xí)筆記(一)

第一步要做的事情是


安裝Rust編譯環(huán)境(人人都有的windows)

咱工作機器是win7+mingw
所以直接到下面的鏈接下載Windows ([GNU ABI ?]) (.msi)就好

https://www.rust-lang.org/en-US/downloads.html

安裝完成后在mingw里輸入"rustc --version"檢查安裝是否成功
如果安裝成功會看到以下輸出


Paste_Image.png

該來的總會來


Hello World

總之先創(chuàng)建一個放代碼的文件夾

$ mkdir hello_world
$ cd hello_world

Rust源文件的后綴名是“.rs”,所以咱們現(xiàn)在要創(chuàng)建一個叫“main.rs”的文件然后把下面的代碼放到里面。

fn main() 
{
    println!("Hello world!"); 
}
  • 第一行代碼定義了一個沒有參數(shù)沒有返回值的函數(shù)main,因為咱主業(yè)是搞c++,無返回值的函數(shù)前面沒有void還是感覺有點怪。
  • 第二行和最后一行是大括號把函數(shù)的實現(xiàn)代碼包起來,這沒啥好說的。
  • 第三行,這一行把hello world輸出到屏幕,名字很直觀print line;說起來官方的文檔上特別強調(diào)縮進是4個空格,不要用tab,咱還以為用tab會有啥問題,特意試了下并沒有啥功能上的區(qū)別能編能跑,果然還是強調(diào)碼規(guī)范吧。值得一提的是,println!()這樣表示調(diào)用的是Rust的宏,是meta編程的實現(xiàn)方式,如果去掉‘!’就是直接調(diào)用函數(shù)了。關(guān)于Rust宏的部分咱還沒看到,總之慢慢來_(:з」∠)_。最后用‘;’結(jié)尾,因為咱主業(yè)是搞c++,咱覺得這很合理。

接下來咱們就要編了

$ rustc main.rs

運行完這個命令后同級目錄下會出現(xiàn)一個main.exe,Linux或者mac就直接是main了,運行它!
然后咱們會看到

Paste_Image.png

總要搞個大項目


Cargo 碉堡了!

Cargo是Rust的包管理器和構(gòu)建系統(tǒng),能編咱們的工程,還能下載咱們工程依賴的庫,還能編咱們下載下來的依賴庫!因為咱還搞過iOS,咱覺得cocoapods很方便,看到Cargo有這功能咱很欣慰。
一般來說通過安裝包安裝Rust編譯環(huán)境的都自帶了Cargo,運行下面的命令來檢查Cargo是否正常

$ cargo --version

如果成功咱們會看到

Paste_Image.png

接下來咱們用Cargo重新編譯Hello world,但是咱們的工程文件夾目前的結(jié)構(gòu)不是很合適,要稍微挪一挪

$ mkdir src
$ mv ./main.rs src
$ rm ./main.exe

在hello_world目錄下創(chuàng)建一個文件,命名為Cargo.toml,注意C務(wù)必要大寫。
這是一個TOML文件,用起來有點像INI,但是更強大(其實咱也沒怎么用過_(:з」∠)_)。

接著把下面的代碼寫入Cargo.toml

[package]

name = "hello_world"
version = "0.0.1"
authors = [ "Your name <you@example.com>" ]

[package]表示接下來的都是用來配置package的部分,接下來的三行配置程序名稱、程序版本以及作者。

保存好后咱們開始build

$ cargo build

如果build成功咱們會看到

Paste_Image.png

運行!

$ ./target/debug/hello_world.exe
Paste_Image.png

換著法兒運行!

$ cargo run
Paste_Image.png

要快,要Release

輸入以下命令來編Release版本,編譯Release版本會讓咱們的程序跑的更快,但是編譯起來會更慢。

$ cargo build --release
Paste_Image.png

Cargo.lock是神馬

在使用Cargo編譯完咱們的工程后在咱們工作路徑下會多出一個文件“Cargo.lock”

Paste_Image.png

里面的內(nèi)容看起來應(yīng)該是這個樣子:

[root]
name = "hello_world"
version = "0.0.1"

Cargo用這個文件來跟蹤咱們工程中的各種依賴。因為咱們寫的hello_world沒有任何依賴,所以咱們的Cargo.lock看起來超簡單。在實際工作中咱們一般不用碰這個文件,一切交給超厲害的Cargo就好。

論如何輕松痛快的創(chuàng)建新項目

懶是推動科技發(fā)展的最強大的力量——孔子

超懶的咱要用Cargo new來輕松創(chuàng)建新項目

$ cargo new hello_worldex --bin

new之后跟的第一個參數(shù)是新項目路徑,--bin表示這個新建項目是一個可執(zhí)行程序。
運行完上面那條命令后,就會發(fā)現(xiàn)當(dāng)前目錄下多了一個hello_worldex文件夾。


Paste_Image.png

該文件夾中包含一個Cargo.toml 和一個src文件夾
打開Cargo.toml看看,……居然自動添加了咱的名字……

[package]
name = "hello_worldex"
version = "0.1.0"
authors = ["Renzhi"]

[dependencies]

咱們還會在src中找到自動生成的main.rs
內(nèi)容如下

fn main() {
    println!("Hello, world!");
}

居然寫好了hello world……咱很欣慰

參考資料


The Rust Programming Language
Cargo Guide

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 通用編程概念 變量與可變性 變量默認不可變,如需要改變,可在變量名前加 mut 使其可變。例如:let mut a...
    soojade閱讀 12,720評論 2 30
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • 此時正在辦公,也不忘忙中偷閑。一枚貪吃的吃貨正出沒...... 因為有你的相伴,倒平添了不少歡愉。感謝有...
    小孜閱讀 296評論 0 2

友情鏈接更多精彩內(nèi)容