在 Rust 中, 每一個值都屬于某一個 數據類型(data type), 這告訴 Rust 它被指定為何種數據,以便明確數據處理方式。我們將看到兩類數據類型子集:標量(scalar)和復合(compound)。
Rust是靜態類型(statically typed)語言,也就是說在編譯時就必須知道所有變量的類型。根據值及其使用方式,編譯器通常可以推斷出我們想要用的類型。當多種類型均有可能時,必須增加類型注解,像這樣:
let u_number: u32 = "42".parse().expect("Not a number!");
如果不像上面的代碼這樣添加類型注解 : u32,Rust 會顯示如下錯誤,這說明編譯器需要我們提供更多信息,來了解想要的類型:
標量(scalar)類型代表一個單獨的值。Rust 有四種基本的標量類型:整型、浮點型、布爾類型和字符類型。
整數 是一個沒有小數部分的數字。下面表格展示了 Rust 內建的整數類型。我們可以使用其中的任一個來聲明一個整數值的類型。
長度 | 有符號 | 無符號 |
8-bit |
|
|
16-bit |
|
|
32-bit |
|
|
64-bit |
|
|
128-bit |
|
|
arch |
|
|
每一個變體都可以是有符號或無符號的,并有一個明確的大小。有符號 和 無符號 代表數字能否為負值,換句話說,這個數字是否有可能是負數(有符號數),或者永遠為正而不需要符號(無符號數)。這有點像在紙上書寫數字:當需要考慮符號的時候,數字以加號或減號作為前綴;然而,可以安全地假設為正數時,加號前綴通常省略。有符號數以補碼形式存儲。
每一個有符號的變體可以儲存包含從 -(2n - 1) 到 2n - 1 - 1 在內的數字,這里 n 是變體使用的位數。所以 i8 可以儲存從 -(27) 到 27 - 1 在內的數字,也就是從 -128 到 127。無符號的變體可以儲存從 0 到 2n - 1 的數字,所以 u8 可以儲存從 0 到 28 - 1 的數字,也就是從 0 到 255。
另外,isize 和 usize 類型依賴運行程序的計算機架構:64 位架構上它們是 64 位的,32 位架構上它們是 32 位的。
可以使用以下表格的任何一種形式編寫數字字面值。請注意可以是多種數字類型的數字字面值允許使用類型后綴,例如 57u8 來指定類型,同時也允許使用 _ 作為分隔符以方便讀數,例如1_000,它的值與你指定的 1000 相同。
數字字面值 | 例子 |
Decimal (十進制) |
|
Hex (十六進制) |
|
Octal (八進制) |
|
Binary (二進制) |
|
Byte (單字節字符)(僅限于 |
|
那么該使用哪種類型的數字呢?如果拿不定主意,Rust 的默認類型通常是個不錯的起點,數字類型默認是 i32。isize 或 usize 主要作為某些集合的索引。
Rust 也有兩個原生的 浮點數(floating-point numbers)類型,它們是帶小數點的數字。Rust 的浮點數類型是 f32 和 f64,分別占 32 位和 64 位。默認類型是 f64,因為在現代 CPU 中,它與 f32 速度幾乎一樣,不過精度更高。所有的浮點型都是有符號的。
以下是浮點數的代碼例子:
fn main() { let x = 2.0; // f64 let y: f32 = 3.0; // f32}
浮點數采用 IEEE-754 標準表示。f32 是單精度浮點數,f64 是雙精度浮點數。
正如其他大部分編程語言一樣,Rust 中的布爾類型有兩個可能的值:true 和 false。Rust 中的布爾類型使用 bool 表示。
布爾型的使用例子如下:
fn main() { let t = true; let f: bool = false;}
使用布爾值的主要場景是條件表達式,例如 if 表達式。
Rust 的 char 類型是語言中最原生的字母類型。下面是一些聲明 char 值的例子:
fn main() { let c = 'z'; let z: char = '?'; let heart_eyed_cat = '
本文鏈接:http://www.www897cc.com/showinfo-26-16367-0.htmlRust編程基礎之六大數據類型
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 掌握Golang匿名函數