Rust 資料型別介紹

大雄45發表於2021-10-09
導讀 Rust 語言是一種高效、可靠的通用高階語言。其高效不僅限於開發效率,它的執行效率也是令人稱讚的,是一種少有的兼顧開發效率和執行效率的語言。

Rust 資料型別介紹Rust 資料型別介紹

Rust 語言中的基礎資料型別有以下幾種。

整數型(Integer)

整數型簡稱整型,按照位元位長度和有無符號分為一下種類:

位長度 有符號 無符號
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize

isize 和 usize 兩種整數型別是用來衡量資料大小的,它們的位長度取決於所執行的目標平臺,如果是 32 位架構的處理器將使用 32 位位長度整型。

整數的表述方法有以下幾種:

進位制
十進位制 98_222
十六進位制 0xff
八進位制 0o77
二進位制 0b1111_0000
位元組(只能表示 u8 型) b'A'

很顯然,有的整數中間存在一個下劃線,這種設計可以讓人們在輸入一個很大的數字時更容易判斷數字的值大概是多少。

浮點數型(Floating-Point)

Rust 與其它語言一樣支援 32 位浮點數(f32)和 64 位浮點數(f64)。預設情況下,64.0 將表示 64 位浮點數,因為現代計算機處理器對兩種浮點數計算的速度幾乎相同,但 64 位浮點數精度更高。

例項

fn main() {
    let x = 2.0; // f64
    let y: f32 = 3.0; // f32
}
數學運算

用一段程式反應數學運算:

例項

fn main() {
    let sum = 5 + 10; // 加 
    let difference = 95.5 - 4.3; // 減 
    let product = 4 * 30; // 乘 
    let quotient = 56.7 / 32.2; // 除 
    let remainder = 43 % 5; // 求餘}

許多運算子號之後加上 = 號是自運算的意思,例如:

sum += 1 等同於 sum = sum + 1。

注意:Rust 不支援 ++ 和 --,因為這兩個運算子出現在變數的前後會影響程式碼可讀性,減弱了開發者對變數改變的意識能力。

布林型

布林型用 bool 表示,值只能為 true 或 false。

字元型

字元型用 char 表示。

Rust的 char 型別大小為 4 個位元組,代表 Unicode標量值,這意味著它可以支援中文,日文和韓文字元等非英文字元甚至表情符號和零寬度空格在 Rust 中都是有效的 char 值。

Unicode 值的範圍從 U+0000 到 U+D7FF 和 U+E000 到 U+10FFFF (包括兩端)。 但是,"字元"這個概念並不存在於 Unicode 中,因此您對"字元"是什麼的直覺可能與Rust中的字元概念不匹配。所以一般推薦使用字串儲存 UTF-8 文字(非英文字元儘可能地出現在字串中)。

注意:由於中文文字編碼有兩種(GBK 和 UTF-8),所以程式設計中使用中文字串有可能導致亂碼的出現,這是因為源程式與 行的文字編碼不一致,所以在 Rust 中字串和字元都必須使用 UTF-8 編碼,否則編譯器會報錯。

複合型別

元組用一對 ( ) 包括的一組資料,可以包含不同種類的資料:
例項

let tup: (i32, f64, u8) = (500, 6.4, 1);// tup.0 等於 500// tup.1 等於 6.4// tup.2 等於 1let (x, y, z) = tup;// y 等於 6.4

陣列用一對 [ ] 包括的同型別資料。

例項

let a = [1, 2, 3, 4, 5];// a 是一個長度為 5 的整型陣列let b = ["January", "February", "March"];// b 是一個長度為 3 的字串陣列let c: [i32; 5] = [1, 2, 3, 4, 5];// c 是一個長度為 5 的 i32 陣列let d = [3; 5];// 等同於 let d = [3, 3, 3, 3, 3];let first = a[0];let second = a[1];// 陣列訪問
a[0] = 123; // 錯誤:陣列 a 不可變let mut a = [1, 2, 3];
a[0] = 4; // 正確

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2795010/,如需轉載,請註明出處,否則將追究法律責任。

相關文章