第一章 Rust基本知識 -- tour of rust
第一章 基礎知識
將探討函式、變數和最基本的型別等基本知識。
變數
變數使用let關鍵字來宣告。
在賦值時,Rust能夠在99%的情況下推斷變數型別。如果不能,也可以將型別新增到變數宣告中。
注意 如果多次分配相同的變數名的方式,這被稱為變數隱藏。可以更改變數型別以實現對該變數名的後續使用。
變數名總是遵循蛇形命名法
let x = 13; println!("{}", x); let x: f64 = 3.14159; println!("{}",x); let x; x = 0; println!("{}", x);
修改變數
Rust非常關心那些變數時可修改的,值分為兩種型別:
-
可變的 - 編譯器允許對變數進行讀取和寫入
-
不可變的- 編譯器只允許對變數進行讀取。
可變值用mut 關鍵字表示
1 let mut x = 42; 2 println!("{}", x); 3 x = 13; 4 println!("{}", x);
基本型別
Rust有多種常見的型別:
-
布林型別-bool 表示true或false
-
無符號整型- u8, u32, u64, u128表示正整數
-
有符號整型- i8, i32, i64, i128表示正負整數
-
指標大小的整數- usize, isize 表示記憶體中內容的索引和大小
-
浮點數- f32 f64
-
元組 tuple - (value, value, ...) 用於在棧上傳遞固定序列的值
-
陣列- 在編譯時已知的具有固定長度的相同元素的集合
-
切片 slice 在執行時已知長度的相同元素的集合
-
Str (string slice) - 在執行時已知長度的文字
可以通過將型別附加到數字的末尾來明確指定數字型別(13u32, 2u8)
1 let x = 12; 2 let a = 12u8; 3 let b = 4.3; 4 let c = 4.3f32; 5 let bv = true; 6 let t = (13, false); 7 let sentence = "hello world!"; 8 println!("{} {} {} {} {} {} {} {}", 9 x, a, b, c, bv, t.0, t.1, sentence 10 );
基本型別轉換
as 關鍵字,Rust使數字型別轉換非常容易
let a = 13u8; let b = 7u32; let c = a as u32 + b; println!("{}", c); let t = true; println!("{}", t as u8);
常量
常量允許我們高效地指定一個在程式碼中會被多次使用的公共值。不會象變數一樣在使用的時候會被複制值,常量會在編譯期間直接用它們的值來替換文字識別符號
不同於變數,常量必須始終具有顯式型別。
常量名總是遵循全大寫蛇形命名法。
1 const PI: f32 = 3.14158;
陣列
陣列是所有相同型別資料元素的固定長度集合。
一個數組的資料型別是[T; N], 其中T是元素的型別,N是編譯時已知的固定長度。
可以使用 [x]運算子檢索單個元素,其中x是所需元素的usize索引。
1 let nums: [i32; 3] = [1, 2, 3]; 2 println!("{:?}", nums); 3 println!("{}", nums[1]);
函式
函式有0個或者多個引數。
函式名總是遵循蛇形命名法。
1 fn add(x: i32, y: i32) -> i32 { 2 x + y 3 }
多個返回值
函式可以通過元組來返回多個值。
元組元素可以通過它們的索引來獲取。
1 fn swap(x: i23, y: i32) -> (i32, i32) { 2 (y, x) 3 } 4 5 let result = swap(123, 321); 6 println!("{} {}"m result.0, result.1);