變數:
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...