1. 程式人生 > 實用技巧 >第一章 Rust基本知識 -- tour of rust

第一章 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);