Rust 數(shù)據(jù)類型

在 Rust 中,每一個值都屬于某一個 數(shù)據(jù)類型(data type),這告訴 Rust 它被指定為何種數(shù)據(jù),以便明確數(shù)據(jù)處理方式。我們將看到兩類數(shù)據(jù)類型子集:標量(scalar)和復合(compound)。

Rust 是 靜態(tài)類型(statically typed)語言,也就是說在編譯時就必須知道所有變量的類型。根據(jù)值及其使用方式,編譯器通常可以推斷出我們想要用的類型。但是很多時候存在多種類型都有可能的情況。

// fail 會發(fā)生編譯錯誤
let guess = "42".parse().expect("Not a number!")
// success
let guess: u32 = "42".parse().expect("Not a number!")

標量類型

標量(scalar)類型代表一個單獨的值。Rust 有四種基本的標量類型。

類型名稱
整型
浮點型
布爾型
字符類型

整型

整型 是一個沒有小數(shù)部分的數(shù)字,并且通過u來決定整型是否是帶符號。
有符號無符號 代表數(shù)字能否為負值

長度 有符號 無符號
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
arch size usize
整型溢出

一個u8類型的整型最多放255,如果放入256,就會導致“整型溢出”(“integer overflow” )

浮點型

Rust 也有兩個原生的 浮點數(shù)(floating-point numbers)類型,它們是帶小數(shù)點的數(shù)字。Rust 的浮點數(shù)類型是 f32 和 f64,分別占 32 位和 64 位。默認類型是 f64,因為在現(xiàn)代 CPU 中,它與 f32 速度幾乎一樣,不過精度更高。

數(shù)值運算

+ | -  | * | %

布爾型

true / false

字符類型

Rust 的 char 類型是語言中最原生的字母類型,
char 由單引號指定,不同于字符串使用雙引號

fn main() {
    let c = 'z';
    let z = '?';
    let heart_eyed_cat = '??';
}

復合類型

復合類型Compound types)可以將多個值組合成一個類型。Rust 有兩個原生的復合類型:元組(tuple)和數(shù)組(array)。

元組

元組是一個將多個其他類型的值組合進一個復合類型的主要方式。
我們使用包含在圓括號中的逗號分隔的值列表來創(chuàng)建一個元組。元組中的每一個位置都有一個類型,而且這些不同值的類型也不必是相同的。

fn main() {
    let tup: (i32, f64, u8) = (500, 6.4, 1);
}

tup 變量綁定到整個元組上,因為元組是一個單獨的復合元素。為了從元組中獲取單個值,可以使用模式匹配(pattern matching)來解構(destructure)元組值

fn main() {
    let tup = (500, 6.4, 1);
    let (x, y, z) = tup;
    println!("The value of y is: {}", y);
}

數(shù)組

另一個包含多個值的方式是 數(shù)組(array)。與元組不同,數(shù)組中的每個元素的類型必須相同。Rust 中的數(shù)組與一些其他語言中的數(shù)組不同,因為 Rust 中的數(shù)組是固定長度的:一旦聲明,它們的長度不能增長或縮小。

let a: [i32; 5] = [1, 2, 3, 4, 5];

當你想要在棧(stack)而不是在堆(heap)上為數(shù)據(jù)分配空間,或者是想要確??偸怯泄潭〝?shù)量的元素時,數(shù)組非常有用。但是數(shù)組并不如 vector 類型靈活。vector 類型是標準庫提供的一個 允許 增長和縮小長度的類似數(shù)組的集合類型。當不確定是應該使用數(shù)組還是 vector 的時候,你可能應該使用 vector。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容