Rust簡明學習手冊 - Rust安裝和基本概念

語言: CN / TW / HK

前言

好久沒學新語言了,最近打算學學Rust並記錄一下Rust的要點,方便後期給自己參考。

快速安裝

Macos | Linux

curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh

Windows

安裝包下載地址

Visual Studio Code 插件

搜索安裝rust-analyzer即可

快速創建rust項目

cargo new 項目名稱 項目結構如下 項目根目錄 - src - main.rs Cargo.toml src下是源代碼,Cargo.toml配置了項目的依賴,版本號等信息,cargo是rust的包管理工具

運行rust代碼

通過Cargo創建的項目可以直接在項目根目錄下運行 cargo run 如果單獨建立一個rust源碼文件,則可以使用rustc編譯,然後手動執行編譯產物 rustc app.rs && ./app

變量

定義

let int_var = 222; int_var = 100; // error! 直接使用let定義時,變量不可被更改,增加mut才可以修改 let mut int_var = 222; int_var = 100; // ok

作用域

變量只在當前作用域生效,作用域的定義類似於C,比如函數,控制語句的Body。當前作用域定義的同名變量可以覆蓋父作用域的相應變量。 fn function() { let int_var = 100; // 只在函數內部生效 if true { let int_var = 20; // 這裏訪問到的int_var則是20 } }

常量

const THIS_IS_A_CONST: i64 = 10 * 200; 常量需要明確指定類型,由const修飾,賦值表達式只能是編譯時可計算出結果的。

方法

定義

fn function_name(param1: Type, param2: Type) -> ReturnType { return xxx; // or xxx } 由關鍵字fn開頭,參數列表由逗號隔開,參數名在前,類型追加在冒號後面,返回值類型在->符號後拼接。返回值可以使用return返回,也可以不寫return,但是注意分號也要去掉。

調用

分為兩種調用方式,類似於其他語言的類方法和實例方法,具體會在介紹mod時詳細展開 xxx::classFunc() xxx.instancFunc()

數據類型

種類

  • 整型:分為iXX和uXX系列,XX支持8,16,32,64,128,直接十六進制(0x),八進制(0o),二進制(0b),Byte(b'A')。默認i32
  • 浮點型:f32和f64,默認f64
  • 布爾值:bool,true或者false
  • 字符:char,支持多字節字符,包括表情
  • tuple:元組,例如 let tup: (i32, f64, u8) = (500, 6.4, 1);
  • 數組:let arr = [1, 2, 3, 4, 5];

雖然rust是強類型語言,但如果編譯器能推導出來類型,我們定義變量時都可以忽略類型,這個和目前很多現代語言類似 let int_var = 222; // 這裏不用寫i32 let int_var = xxx::funcReturnInt32Var(); // 這裏不用寫i32

註釋

單行

// hello, world

多行

文檔上沒有説這種註釋方式,但是我試了一下的確可以 /* Name:func Param: arg1 */

流程控制語句

if

``` // 常規的if else if a < 5 {

} else if b == 6 {

} else {

}

// 對標三目操作符 let a = if b==0 {someval} else {otherval}; ```

loop

loop { // 永遠運行 }

loop的break不僅退出循環,還可以返回一個值 let val = loop { ... break some_val; }

while

和其他語言的while類似 while a < 5 { ... break; }

for

和其他語言的for類似,對數組或者其他可迭代的對象進行元素遍歷 ``` for item in arr {

} ```