Rust學習 基礎概念

2022-09-14 13:24:07 字數 1525 閱讀 1695

變數:

let 、let mut

const

資料型別:

標量型別(scalar types)

整型有符號 和 無符號 代表數字能否為負值

有符號:-(2^(n-1)) ~ 2^(n-1) - 1

無符號:0 ~ 2^n - 1

長度型別為 arch 表示根據當前計算機架構位數,64位就是64位,32位就是32位

宣告整型預設型別是 i32

浮點宣告浮點數預設型別是 f64(因為精度比f32高)

採用ieee-754 標準表示

布林bool

字元用char宣告,使用單引號,字串使用雙引號

char型別大小為4個位元組 4 * 8 = 32位

復合型別(compound types)

元祖(tuple)

將多個不同型別值組合進乙個復合型別的方式

2.元祖長度是固定的,不可變

元祖可以解構

支援用 .index 的方式訪問值

如果表示式不返回任何值,則會隱式返回單元值,即沒有任何值得元祖:()

陣列陣列中的每個元素型別必須相同

rust中陣列長度是固定的,不可變

let a = [3; 2] === let a = [3, 3]

let a: [i32; 5] = [1,2,3,4,5]

陣列越界rust會panic,直接告訴你,安全保障

函式函式變數命名遵循 snake case風格,所有字母都是小寫並用下劃線分割單詞。

函式引數

必須宣告每個引數型別

包含語句和表示式的函式體

rust是一門基於表示式的語言

語句不返回值

表示式可以是語句的一部分

{},也是乙個表示式,可以用來運算

如果在表示式結尾加上分號,就變成了語句,語句不會返回值,所以要視情況而定

具有返回值的函式

-> 宣告函式返回值型別

注釋rust 中的注釋有兩種:

// 雙斜槓注釋

doc 注釋

控制流if不用寫括號包裹條件(arms)

條件必須是bool值,無隱式轉換

if可以在let中使用..

每個分支表示式返回值必須都是相同型別

迴圈有三種:loop、while、for

loop

使用break停止迴圈

使用continue跳出本次迴圈

若存在巢狀迴圈,break、continue應用於就近的內層迴圈

可以選擇在迴圈上指定「迴圈標籤」,即給迴圈命名,這樣可以使用break、continune顯示操作迴圈迭代,如 break '***x_loop';

迴圈可以返回值,通過在break表示式後加入表示式,如 break count * 2;

while

for在陣列越界這種場景時,可以考慮用for替代while

通過 for ele in list.iter() {} 迭代list

通過 for num in (1..4).rev() {} 反轉輸出4321

Rust學習 所有權概念

一 什麼是所有權 一旦理解了所有權,就不需要經常考慮棧和堆了。一些語言自帶垃圾 機制 一些語言需要程式設計師手動分配記憶體和釋放 rust通過所有權系統管理記憶體,編譯器會在編譯時根據一些列規則進行檢查。在執行時,所有權系統不會減慢程式。棧 stack 所有資料必須占用已知固定的大小 堆 heap ...

Rust 通用程式設計概念

變數 基本型別 函式 控制流 rust中的變數預設是不可變的,這樣是為了能夠讓你安全並且方便地寫出複雜 甚至並行的 當乙個變數是不可變時,一旦它繫結到了某個值上面,這個值就再也無法被改變了。1 let x 5 m,2 println the value of x is x 3 x 6 4 canno...

Rust基礎 for迴圈

1 arr.iter 方法 創造乙個不可修改值的迴圈器 let mut arr vec 0 13 for value in arr.iter value 2 iter mut 方法 創造乙個可修改值的迴圈器 let mut arr vec 0 13 for value in arr.iter val...