精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Rust編程基礎之六大數據類型

開發 前端
程序在索引操作中使用一個無效的值時導致 運行時 錯誤。程序帶著錯誤信息退出,并且沒有執行最后的 println! 語句。當嘗試用索引訪問一個元素時,Rust 會檢查指定的索引是否小于數組的長度。

1.Rust數據類型

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

Rust是靜態類型(statically typed)語言,也就是說在編譯時就必須知道所有變量的類型。根據值及其使用方式,編譯器通常可以推斷出我們想要用的類型。當多種類型均有可能時,必須增加類型注解,像這樣:

let u_number: u32 = "42".parse().expect("Not a number!");

如果不像上面的代碼這樣添加類型注解 : u32,Rust 會顯示如下錯誤,這說明編譯器需要我們提供更多信息,來了解想要的類型:

圖片

2.標量類型

標量(scalar)類型代表一個單獨的值。Rust 有四種基本的標量類型:整型、浮點型、布爾類型和字符類型。

2.1 整型

整數 是一個沒有小數部分的數字。下面表格展示了 Rust 內建的整數類型。我們可以使用其中的任一個來聲明一個整數值的類型。

長度

有符號

無符號

8-bit

i8

u8

16-bit

i16

u16

32-bit

i32

u32

64-bit

i64

u64

128-bit

i128

u128

arch

isize

usize

每一個變體都可以是有符號或無符號的,并有一個明確的大小。有符號 和 無符號 代表數字能否為負值,換句話說,這個數字是否有可能是負數(有符號數),或者永遠為正而不需要符號(無符號數)。這有點像在紙上書寫數字:當需要考慮符號的時候,數字以加號或減號作為前綴;然而,可以安全地假設為正數時,加號前綴通常省略。有符號數以補碼形式存儲。

每一個有符號的變體可以儲存包含從 -(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 (十進制)

98_222

Hex (十六進制)

0xff

Octal (八進制)

0o77

Binary (二進制)

0b1111_0000

Byte (單字節字符)(僅限于u8)

b'A'

那么該使用哪種類型的數字呢?如果拿不定主意,Rust 的默認類型通常是個不錯的起點,數字類型默認是 i32。isize 或 usize 主要作為某些集合的索引。

2.2 浮點型

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 是雙精度浮點數。

2.3 布爾型

正如其他大部分編程語言一樣,Rust 中的布爾類型有兩個可能的值:true 和 false。Rust 中的布爾類型使用 bool 表示。

布爾型的使用例子如下:

fn main() {
    let t = true;
    let f: bool = false;
}

使用布爾值的主要場景是條件表達式,例如 if 表達式。

2.4 字符類型

Rust 的 char 類型是語言中最原生的字母類型。下面是一些聲明 char 值的例子:

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

注意,我們用單引號聲明 char 字面量,而與之相反的是,使用雙引號聲明字符串字面量。Rust 的 char 類型的大小為四個字節 (four bytes),并代表了一個 Unicode 標量值(Unicode Scalar Value),這意味著它可以比 ASCII 表示更多內容。在 Rust 中,帶變音符號的字母(Accented letters),中文、日文、韓文等字符,emoji(繪文字)以及零長度的空白字符都是有效的 char 值。Unicode 標量值包含從 U+0000 到 U+D7FF 和 U+E000 到 U+10FFFF 在內的值。不過,“字符” 并不是一個 Unicode 中的概念,所以人直覺上的 “字符” 可能與 Rust 中的 char 并不符合。

3.復合類型

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

3.1 元組類型

元組是一個將多個其他類型的值組合進一個復合類型的主要方式。元組長度固定:一旦聲明,其長度不會增大或縮小。

我們使用包含在圓括號中的逗號分隔的值列表來創建一個元組。元組中的每一個位置都有一個類型,而且這些不同值的類型也不必是相同的。例子如下:

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}");
}

程序首先創建了一個元組并綁定到 tup 變量上。接著使用了 let 和一個模式將 tup 分成了三個不同的變量,x、y 和 z。這叫做 解構(destructuring),因為它將一個元組拆成了三個部分。最后,程序打印出了 y 的值,也就是 6.4。

我們也可以使用點號(.)后跟值的索引來直接訪問它們。例如:

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

    let five_hundred = x.0;

    let six_point_four = x.1;

    let one = x.2;
}

這個程序創建了一個元組,x,然后使用其各自的索引訪問元組中的每個元素。跟大多數編程語言一樣,元組的第一個索引值是 0。

不帶任何值的元組有個特殊的名稱,叫做 單元(unit) 元組。這種值以及對應的類型都寫作 (),表示空值或空的返回類型。如果表達式不返回任何其他值,則會隱式返回單元值。

3.2 數組類型

另一個包含多個值的方式是 數組(array)。與元組不同,數組中的每個元素的類型必須相同。Rust 中的數組與一些其他語言中的數組不同,Rust 中的數組長度是固定的。

我們將數組的值寫成在方括號內,用逗號分隔:

fn main() {
    let a = [1, 2, 3, 4, 5];
}

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

然而,當你確定元素個數不會改變時,數組會更有用。例如,當你在一個程序中使用月份名字時,你更應趨向于使用數組而不是 vector,因為你確定只會有 12 個元素。

let months = ["January", "February", "March", "April", "May", "June", "July",
              "August", "September", "October", "November", "December"];

可以像這樣編寫數組的類型:在方括號中包含每個元素的類型,后跟分號,再后跟數組元素的數量。

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

這里,i32 是每個元素的類型。分號之后,數字 5 表明該數組包含五個元素。

你還可以通過在方括號中指定初始值加分號再加元素個數的方式來創建一個每個元素都為相同值的數組:

let a = [3; 5];

變量名為 a 的數組將包含 5 個元素,這些元素的值最初都將被設置為 3。這種寫法與 let a = [3, 3, 3, 3, 3]; 效果相同,但更簡潔。

數組是可以在棧 (stack) 上分配的已知固定大小的單個內存塊??梢允褂盟饕齺碓L問數組的元素,像這樣:

fn main() {
    let a = [1, 2, 3, 4, 5];

    let first = a[0];
    let second = a[1];
}

在這個例子中,叫做 first 的變量的值是 1,因為它是數組索引 [0] 的值。變量 second 將會是數組索引 [1] 的值 2。

如果我們訪問數組結尾之后的元素會發生什么呢?比如執行以下代碼:

use std::io;

fn main() {
    let a = [1, 2, 3, 4, 5];

    println!("Please enter an array index.");

    let mut index = String::new();

    io::stdin()
        .read_line(&mut index)
        .expect("Failed to read line");

    let index: usize = index
        .trim()
        .parse()
        .expect("Index entered was not a number");

    let element = a[index];

    println!("The value of the element at index {index} is: {element}");
}此代碼編譯成功。如果運行此代碼并輸入 0、1、2、3 或 4,程序將在數組中的索引處打印出相應的值。如果你輸入一個超過數組末端的數字,如 10,你會看到這樣的輸出:
0
1
2
3
4

此代碼編譯成功。如果運行此代碼并輸入 0、1、2、3 或 4,程序將在數組中的索引處打印出相應的值。如果你輸入一個超過數組末端的數字,如 10,你會看到這樣的輸出:

圖片圖片

程序在索引操作中使用一個無效的值時導致 運行時 錯誤。程序帶著錯誤信息退出,并且沒有執行最后的 println! 語句。當嘗試用索引訪問一個元素時,Rust 會檢查指定的索引是否小于數組的長度。如果索引超出了數組長度,Rust 會 panic,這是 Rust 術語,它用于程序因為錯誤而退出的情況。這種檢查必須在運行時進行,特別是在這種情況下,因為編譯器不可能知道用戶在以后運行代碼時將輸入什么值。

這是第一個在實戰中遇到的 Rust 安全原則的例子。在很多底層語言中,并沒有進行這類檢查,這樣當提供了一個不正確的索引時,就會訪問無效的內存。通過立即退出而不是允許內存訪問并繼續執行,Rust會讓程序員避開此類錯誤。

4.總結

在本篇文章中,我們學習了Rust的基本數據類型,包括:整型、浮點型、布爾型、字符串、元祖類型和數組類型。

在下篇文章中,我們將一起學習Rust的函數和控制流。

責任編輯:武曉燕 來源: 二進制空間安全
相關推薦

2017-07-27 14:18:41

大數據挑戰動向

2023-05-14 18:56:50

Rust數據類型

2025-07-10 07:00:00

CIO數據管理IT領導者

2015-10-14 14:58:13

2021-04-28 18:16:24

Rust數據類型

2017-03-01 21:02:11

大數據趨勢

2024-04-18 10:59:08

系統數據數據管理架構

2011-05-24 13:16:23

2017-04-12 13:42:53

大數據規則團隊

2019-07-02 09:23:55

大數據數據分析機器學習

2011-03-08 11:10:39

2011-03-23 14:25:54

2013-12-11 09:41:24

大數據

2016-12-08 08:54:46

大數據預言物聯網

2022-11-02 11:02:52

數據中心數據中心架構

2020-02-17 09:42:09

編程語言JavaWindows

2021-04-05 08:22:54

Python進制數據類型

2024-04-11 13:02:10

Rust數據類型

2012-02-15 09:28:18

2020-06-09 12:12:34

大數據安全數據泄露數據安全
點贊
收藏

51CTO技術棧公眾號

一区二区三区av在线| 日韩高清有码在线| 在线综合视频网站| 国产chinasex对白videos麻豆| 亚洲欧美文学| 国产视频久久久| 久久99爱视频| 国产一二三在线| 国产精品国产自产拍在线| 大波视频国产精品久久| 国产一区免费看| 欧美不卡视频| 亚洲性视频网址| 亚洲熟女乱综合一区二区| 国产 日韩 欧美一区| 伊人色综合久久天天人手人婷| 欧美日韩国产免费一区二区三区| 国产又爽又黄免费软件| 国产日韩欧美一区在线| 久久久国产精品x99av| 亚洲最大成人网站| 日韩欧美激情电影| 欧美日韩在线电影| 一女被多男玩喷潮视频| 在线观看三级视频| 中文字幕一区不卡| 日韩高清三级| 欧美孕妇性xxxⅹ精品hd| 国产一区二区免费看| 国产精品久久久久久久久久新婚| 国产精品suv一区二区| 欧美freesextv| 国产亚洲一区精品| 香港三级日本三级| 综合激情网...| 在线91免费看| 日本黄大片一区二区三区| 午夜欧美激情| 午夜精品久久久久久久蜜桃app| 一区二区免费在线观看| 成人精品福利| 久久精品免费在线观看| 精品一区二区三区免费毛片| 亚洲精品国产精品国| 国产精品2024| 99热国产免费| 99精品视频在线播放免费| 久久精品国产999大香线蕉| 国产成人精品亚洲精品| 影音先锋在线国产| 亚洲一区二区三区四区五区午夜| 午夜精品福利视频| 国产五月天婷婷| 亚洲午夜黄色| 久久久久久久香蕉网| 久久中文字幕在线观看| 国产精品啊啊啊| 欧美精品成人在线| 日韩 欧美 精品| 日韩一级在线| 国产成人精品一区二区三区| 国产女主播喷水视频在线观看 | 影音先锋亚洲天堂| 99精品国产福利在线观看免费| 久久久久久久成人| 国产欧美日韩另类| 久久综合伊人| 国产精品视频永久免费播放| 在线免费av片| 国产一区二区视频在线播放| av成人午夜| 亚洲人成色777777精品音频| 久久只精品国产| 四虎影视永久免费在线观看一区二区三区| 草碰在线视频| 亚洲色图另类专区| www.国产在线视频| 成人动漫一区| 欧美老女人第四色| 野战少妇38p| 九九综合九九| 久久九九有精品国产23| 国产亚洲精久久久久久无码77777| 亚洲美女色禁图| 热门国产精品亚洲第一区在线| 国产偷人爽久久久久久老妇app| 美女精品一区二区| 99久久精品久久久久久ai换脸| 天堂在线视频免费| 国产欧美一区二区三区鸳鸯浴| 国产日韩视频在线播放| 免费看男女www网站入口在线| 色婷婷亚洲精品| 天天色天天综合网| 天堂在线精品| 久久综合五月天| 六月丁香激情综合| 国内精品伊人久久久久av影院| 国产亚洲一区二区三区在线播放| 福利片在线看| 亚洲一区二区三区爽爽爽爽爽 | 精品香蕉一区二区三区| 激情无码人妻又粗又大| 亚洲第一毛片| 成人a级免费视频| 天堂√在线中文官网在线| 国产精品久久久久久久久免费相片| 国产精品久久国产| 久久天天久久| 亚洲精品永久免费| 欧美黄色一级网站| 麻豆精品视频在线观看视频| 国模精品一区二区三区| 免费a级在线播放| 狠狠综合久久av一区二区小说| 视频区 图片区 小说区| 国产亚洲一卡2卡3卡4卡新区| 欧美第一页在线| 亚洲影院一区二区三区| 91蜜桃免费观看视频| 狠狠干视频网站| 国产在线|日韩| 日韩成人在线视频观看| 欧美黑吊大战白妞| 激情久久五月天| 亚洲 国产 日韩 综合一区| 成人观看网址| 精品嫩草影院久久| 欧美卡一卡二卡三| 国产一区二区福利视频| 一区二区精品免费视频| 欧美一区二区三区婷婷| 亚洲人成毛片在线播放| 日韩av无码中文字幕| 国产一区二区三区在线看麻豆| 亚洲啪啪av| 日本成人片在线| 亚洲免费电影在线观看| 羞羞影院体验区| 97久久久精品综合88久久| 99色这里只有精品| 亚洲小说春色综合另类电影| 久久综合伊人77777| 国产欧美日韩成人| 亚洲麻豆国产自偷在线| 九九热视频免费| 91精品一区二区三区综合在线爱| 成人黄色在线播放| 老司机午夜在线| 欧美一区二区三区电影| 蜜臀av午夜精品久久| 精品亚洲免费视频| 中文字幕av久久| 狂野欧美xxxx韩国少妇| 欧美日韩国产成人高清视频| 亚洲国产精品久久人人爱潘金莲| 亚洲精品美国一| 国产精品日日摸夜夜爽| 激情综合久久| 欧美在线视频二区| 久久精品 人人爱| 久久久www成人免费精品| 国产精品污视频| 亚洲男人的天堂在线aⅴ视频| 人妻换人妻仑乱| 国自产拍偷拍福利精品免费一 | 欧美日韩性在线观看| 国产v综合ⅴ日韩v欧美大片| 91免费在线| 91精品国产91久久综合桃花 | 精品国产乱码久久久久久虫虫漫画| 中文字幕三级电影| 久久激情网站| 亚洲三区在线| 一区二区三区免费在线看| 韩国精品久久久999| 欧美色18zzzzxxxxx| 欧美亚洲国产一区二区三区| www深夜成人a√在线| 成人中文字幕合集| 人妻内射一区二区在线视频| 成人aaaa| 高清国产一区| 另类图片综合电影| 不卡中文字幕av| 亚洲av成人无码网天堂| 欧美三级日韩三级| 青青草免费av| 久久精品视频免费| 国产精品嫩草影视| 亚洲永久字幕| 一区二区三区国| 国产精品极品在线观看| 国产精品国模在线| 天堂av最新在线| 伊人久久综合97精品| 亚洲精品国产片| 91成人免费在线视频| 全网免费在线播放视频入口| 久久综合狠狠综合久久激情 | 97久久精品人人澡人人爽| 欧美特级aaa| 一区三区视频| 一区二区三区四区五区精品| 红杏成人性视频免费看| 国产日本欧美一区二区三区| av老司机在线观看| www亚洲精品| 狠狠v欧美ⅴ日韩v亚洲v大胸| 日韩免费观看高清完整版在线观看| 国产黄色免费观看| 亚洲精品少妇30p| 超薄肉色丝袜一二三| 成人av网站免费观看| 午夜视频在线网站| 日韩精品亚洲一区二区三区免费| 国产欧美精品aaaaaa片| 国产韩日影视精品| 日本成人三级电影网站| 久久91在线| 91视频免费进入| 欧美亚洲综合视频| 国产成人精品日本亚洲| 涩涩涩在线视频| 久久久免费电影| 日韩免费影院| 伦伦影院午夜日韩欧美限制| 不卡在线视频| 亚洲少妇激情视频| 欧美女同网站| 亚洲美女精品成人在线视频| 搡老岳熟女国产熟妇| 欧美成人r级一区二区三区| 在线观看一二三区| 欧美私人免费视频| 波多野结衣绝顶大高潮| 色综合久久综合网97色综合| www日韩精品| 亚洲二区在线视频| 久久精品国产亚洲AV无码麻豆| 亚洲美腿欧美偷拍| 欧美日韩色视频| 亚洲视频在线观看三级| 天天鲁一鲁摸一摸爽一爽| 综合久久给合久久狠狠狠97色| 国产又粗又长免费视频| 国产精品丝袜久久久久久app| 一级黄色片网址| 欧美极品少妇xxxxⅹ高跟鞋| 国产毛片欧美毛片久久久| 中文在线资源观看网站视频免费不卡 | 日本三级福利片| 这里只有精品在线| 波多野结衣 作品| 国产精品99一区二区| 精品一区二区三区无码视频| 亚洲激情另类| 国产成人在线免费看| 丝袜亚洲精品中文字幕一区| 男人女人黄一级| 美日韩一区二区| 在线观看日本www| 国产福利91精品| av网页在线观看| 国产日韩影视精品| 永久免费观看片现看| 亚洲欧洲制服丝袜| 国产一级特黄a高潮片| 精品福利视频导航| 中文字幕一区二区人妻视频| 欧美手机在线视频| 国产男男gay网站| 亚洲精品久久久久久久久久久久久| 五月婷婷激情在线| 亚洲社区在线观看| av片在线观看永久免费| 97视频在线播放| 国产毛片精品久久| 国产传媒一区| 国产一区二区三区91| 日本xxxxx18| 亚洲在线成人| 国产成人美女视频| 成人激情免费网站| 成人小视频免费看| 亚洲伊人伊色伊影伊综合网| 国产小视频在线免费观看| 欧美亚洲国产怡红院影院| 北条麻妃一二三区| 亚洲桃花岛网站| 亚洲91av| 国产精品国产三级国产aⅴ浪潮| 国产视频一区二| 欧美日韩成人一区二区三区| 小小影院久久| 国产亚洲精品网站| 国产精品综合久久| 99久久久久久久久久| 亚洲精品成人a在线观看| 色婷婷av国产精品| 欧美一区二区三区免费视频| 日韩大片b站免费观看直播| 久久五月天综合| 女生影院久久| 国产免费一区| 婷婷综合社区| 日本美女高潮视频| 成人av先锋影音| 国产极品国产极品| 欧美专区日韩专区| 亚洲av毛片成人精品| 久久av.com| 国产精品第一国产精品| 九九九九精品| 欧美日韩精品| 色噜噜狠狠永久免费| 久久噜噜亚洲综合| 国产精品23p| 日韩美女一区二区三区| 中文字幕在线观看日本| 日韩av不卡电影| 久久精品论坛| 九九热只有这里有精品| 国产精品91一区二区| 九九热久久免费视频| 色综合天天综合| 天天操天天爱天天干| 欧美激情国产精品| 国产免费av国片精品草莓男男| 色一情一乱一伦一区二区三区 | 欧美 日韩 人妻 高清 中文| 久久天天躁狠狠躁夜夜躁| 国产毛片精品久久| 亚洲a∨一区二区三区| 日韩高清在线一区| 成人性生交大免费看| 欧美视频在线免费看| 秋霞网一区二区| 国语自产精品视频在线看抢先版图片| 国产精品日本一区二区不卡视频| 亚洲精品一区二区三区四区五区| 丝袜美腿成人在线| 韩国女同性做爰三级| 欧美性色视频在线| 精品电影在线| 国产a级全部精品| 国产欧美日韩一区二区三区四区| 国产美女三级视频| 久久久久久久久免费| 日韩免费av网站| 中文字幕日韩综合av| 欧美美女福利视频| 自拍亚洲欧美老师丝袜| 国产在线不卡视频| 久草免费新视频| 欧美精品一区在线观看| 僵尸再翻生在线观看| 欧美一区二区视频17c| 日产国产欧美视频一区精品| 精品一区二区三区蜜桃在线| 欧美日韩国产bt| 成人福利网站| 成人免费视频观看视频| 亚洲区欧美区| 亚洲黄色小说视频| 欧美日韩黄色一区二区| 精品国产白色丝袜高跟鞋| 亚洲一区二区久久久久久| 精品白丝av| wwwwww日本| 555夜色666亚洲国产免| 懂色av一区| 任我爽在线视频精品一| 久久综合综合久久综合| 九九免费精品视频| 日韩大陆欧美高清视频区| 韩日精品一区| 欧美一级中文字幕| xnxx国产精品| 91好色先生tv| 欧美黑人狂野猛交老妇| 午夜a一级毛片亚洲欧洲| 欧美男女交配视频| 亚洲主播在线播放| 国产最新视频在线观看| 91情侣偷在线精品国产| 国产欧美精品久久| 亚洲aaa视频| 日韩av网站大全| 久久人体av| 久久久999视频| 亚洲天堂中文字幕| 三级av在线| 亚洲va欧美va在线观看| 久久天天综合| a级片在线观看免费| 亚洲香蕉成视频在线观看| 日韩亚洲精品在线观看| 尤蜜粉嫩av国产一区二区三区| 洋洋成人永久网站入口|