首頁>技術>

今天跟大家分享學習Rust的筆記。網上很多教程,入門都不容易懂,我要寫自己的,對新手友好一些的。

新學一門語言,困擾大家的是什麼?是如何獲得快樂,以及如何搞一點有用的東西出來,讓自己有快樂的收穫感,成就感。讓自己可以堅持下去。

先訂一個小目標,我要編寫一段小程式,它有以下功能:

這是一個命令列工具它執行之後,顯示一段文字:please type your name等待我的輸入完成之後,按回車鍵。顯示:hello [username]

顯示你所輸入的名字

讓我們開始吧。先看最基本的程式碼。在寫程式碼之前,我認為你己經裝了Rust up工具鏈,你電腦上最起碼裝好了cargo和rustc

我們先建立一個目錄,比如c:\workspace\rust-hello

然後開啟一個shell視窗,windows下面的cmd或者Linux 下面的terminal都算是shell

cd 進入目錄, 執行cargo init初始化專案腳手架。

然後編輯src/main.rs

程式碼如下:

use std::io::{self};fn main() {    println!("Please type your name:");    let mut username = String::new();    io::stdin().read_line(&mut username).expect("Error: can not get input");    println!("hello {}", username);}

執行很簡單,執行: cargo run就可以了。輸入一個名字,回車,你會收到來自rust程式的問候

我們來逐行看程式碼

第一行 use std::io::{self} 是引入標準庫io,self表示引入這一級的package名。要使用下而的方法。

是io::stdin()

注意這個::兩個符號,就是呼叫模組下面的某個方法的意思,

再往下看,fn main() {

這一行就是cli應用程式的main 函式,fn 是function的意思,它聲明瞭這是一個main方法。

{括號開始到}結尾,就是main函式的主體

println!("Please type your name:");

這是第一句,作用是在輸出端,也就是shell視窗,顯示一行文字,please type your name: , 注意println!是有一個!感嘆號的作用其實是展開宏命令(Expand macro), 你先記一下這個概念,後面再深入。先從簡單的學起。println!的作用是列印變數,不變數到std out

每一句程式碼,以;符號表示一句結束,這個跟其它語言,csharp, cpp, java比較相似。

let mut username = String::new();

左邊定義了一個username的變數,mut 表是它是變數,只有變數才能接受修改,它後面要接收使用者輸入,所以這裡面要用mut定義一個變數的意思。 let是 一個動作,指令,它表示使變數等於 xxx值的意思, 也就是讓變數 username 等於 = 符號右邊的 值

再看右邊的 String::new();

String 是Rust 內建的資料型別,表示是字串型別,new方法是建立一個容器,並分配記憶體,接下來你就可以往分配好的變數username裡面寫內容了。

io::stdin() 呼叫了stdin方法,接下來read_line表示讀取 使用者輸入的一行內容(以回車鍵為結尾)【變數username是 read_line的一個引數,作為一個方法,read_line 會把引數username當容器,使用者輸入的內容,會回填到username裡面。.expect是一個方法,當前面的方法執行失敗的時候,我們要丟擲一個異常,expect方法的引數,你可以寫上錯的訊息,表示當發生錯的時候,咱們無法獲取使用者輸入。

再往下看, println!("hello {}", username);

這一句是列印使用者輸入的內容,它存在username這個變數裡面。 {}是一個佔位符,變數會填充到佔位符裡面。

比如你叫張三,那麼經過運算處理,你會看到一行輸出:hello 張三。

雖然幾行程式碼,但涵蓋了不少rust的知識點,大家可以下去好好實驗一下。

比如接收的不是字串,是整數。你該怎麼寫程式。

比如你要接收兩個數字,把它們加起來,顯示加了之後的結果,你程式碼怎麼寫。

還有,你可以嘗試輸入多種資料結構,比如錄入一個人的檔案資訊: 姓名,性別,年齡等。

都可以衍生開來。等你寫了一圈相關程式碼,你會發現,你居然己經會寫Rust程式碼了。

是不是很簡單,有沒有覺得自己很了不起?

Rust其實很好學,跟著鋒哥學技術。

12
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 我所瞭解的OPC UA