国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Rust-類型

這篇具有很好參考價(jià)值的文章主要介紹了Rust-類型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

bool

布爾類型(bool)代表的是“是”和“否”的二值邏輯。它有兩個(gè)值:true和false。

一般用在邏輯表達(dá)式中,可以執(zhí)行“與”“或”“非”等運(yùn)算。

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

char

字符類型由char表示。它可以描述任何一個(gè)符合unicode標(biāo)準(zhǔn)的字符值。在代碼中,單個(gè)的字符字面量用單引號(hào)包圍。

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
字符類型字面量也可以使用轉(zhuǎn)義符:
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
因?yàn)閏har類型的設(shè)計(jì)目的是描述任意一個(gè)unicode字符,因此它占據(jù)的內(nèi)存空間不是1個(gè)字節(jié),而是4個(gè)字節(jié)。

對(duì)于ASCⅡ字符其實(shí)只需占用一個(gè)字節(jié)的空間,因此Rust提供了單字節(jié)字符字面量來(lái)表示ASCⅡ字符。我們可以使用一個(gè)字母b在字符或者字符串前面,代表這個(gè)字面量存儲(chǔ)在u8類型數(shù)組中,這樣占用空間比char型數(shù)組要小一些。示例如下:

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

整數(shù)類型

Rust有許多的數(shù)字類型,主要分為整數(shù)類型和浮點(diǎn)數(shù)類型。本節(jié)講解整數(shù)類型。各種整數(shù)類型之間的主要區(qū)分特征是:有符號(hào)/無(wú)符號(hào),占據(jù)空間大小。

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
需要特別關(guān)注的是isize和usize類型。

它們占據(jù)的空間是不定的,與指針占據(jù)的空間一致,與所在的平臺(tái)相關(guān)。如果是32位系統(tǒng)上,則是32位大?。蝗绻?4位系統(tǒng)上,則是64位大小。

在C++中與它們相對(duì)應(yīng)的類似類型是int_ptr和uint_ptr。Rust的這一策略與C語(yǔ)言不同,C語(yǔ)言標(biāo)準(zhǔn)中對(duì)許多類型的大小并沒有做強(qiáng)制規(guī)定,比如int、long、double等類型,在不同平臺(tái)上都可能是不同的大小,這給許多程序員帶來(lái)了不必要的麻煩。相反,在語(yǔ)言標(biāo)準(zhǔn)中規(guī)定好各個(gè)類型的大小,讓編譯器針對(duì)不同平臺(tái)做適配,生成不同的代碼,是更合理的選擇。

數(shù)字類型的字面量表示可以有許多方式:

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端字面量后面可以跟后綴,可代表該數(shù)字的具體類型,從而省略掉顯示類型標(biāo)記:
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

我們可以為任何一個(gè)類型添加方法,整型也不例外。比如在標(biāo)準(zhǔn)庫(kù)中,整數(shù)類型有一個(gè)方法是pow,它可以計(jì)算n次冪,于是我們可以這么使用:

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
我們甚至可以不使用變量,直接對(duì)整型字面量調(diào)用函數(shù):
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
對(duì)于整數(shù)類型,如果Rust編譯器通過(guò)上下文無(wú)法分析出該變量的具體類型,則自動(dòng)默認(rèn)為i32類型。比如:
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

整數(shù)溢出

在整數(shù)的算術(shù)運(yùn)算中,有一個(gè)比較頭疼的事情是“溢出”。

在C語(yǔ)言中,對(duì)于無(wú)符號(hào)類型,算術(shù)運(yùn)算永遠(yuǎn)不會(huì)overflow,如果超過(guò)表示范圍,則自動(dòng)舍棄高位數(shù)據(jù)。

對(duì)于有符號(hào)類型,如果發(fā)生了overflow,標(biāo)準(zhǔn)規(guī)定這是undefined behavior,也就是說(shuō)隨便怎么處理都可以。

未定義行為有利于編譯器做一些更激進(jìn)的性能優(yōu)化,但是這樣的規(guī)定有可能導(dǎo)致在程序員不知情的某些極端場(chǎng)景下,產(chǎn)生詭異的bug。

Rust的設(shè)計(jì)思路更傾向于預(yù)防bug,而不是無(wú)條件地壓榨效率,Rust設(shè)計(jì)者希望能盡量減少“未定義行為”。

比如徹底杜絕“Segment Fault”這種內(nèi)存錯(cuò)誤是Rust的一個(gè)重要設(shè)計(jì)目標(biāo)。

當(dāng)然還有其他許多種類的bug,即便是無(wú)法完全解決,我們也希望能盡量避免。

整數(shù)溢出就是這樣的一種bug。

Rust在這個(gè)問題上選擇的處理方式為:默認(rèn)情況下,在debug模式下編譯器會(huì)自動(dòng)插入整數(shù)溢出檢查,一旦發(fā)生溢出,則會(huì)引發(fā)panic。

在release模式下,不檢查整數(shù)溢出,而是采用自動(dòng)舍棄高位的方式。示例如下:

Rust編譯器還提供了一個(gè)獨(dú)立的編譯開關(guān)供我們使用,通過(guò)這個(gè)開關(guān),可以設(shè)置溢出時(shí)的處理策略:

$rustc -C overflow-checks=no test.rs

“-C overflow-checks=”可以寫“yes”或者“no”,打開或者關(guān)閉溢出檢查。

如果在某些場(chǎng)景下,用戶確實(shí)需要更精細(xì)地自主控制整數(shù)溢出的行為,可以調(diào)用標(biāo)準(zhǔn)庫(kù)中的checked_*、saturating_*和wrapping_*系列函數(shù)。

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
輸出結(jié)果為:
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
checked_*系列函數(shù)返回的類型是Option<_>,當(dāng)出現(xiàn)溢出的時(shí)候,返回值是None。

saturating_*系列函數(shù)返回類型是整數(shù),如果溢出,則給出該類型可表示范圍的“最大/最小”值。

wrapping_*系列函數(shù)則是直接拋棄已經(jīng)溢出的最高位,將剩下的部分返回。

在對(duì)安全性要求非常高的情況下,強(qiáng)烈建議用戶盡量使用這幾個(gè)方法替代默認(rèn)的算術(shù)運(yùn)算符來(lái)做數(shù)學(xué)運(yùn)算,這樣表意更清晰。

在Rust標(biāo)準(zhǔn)庫(kù)中就大量使用了這幾個(gè)方法,而不是簡(jiǎn)單地使用算術(shù)運(yùn)算符,值得大家參考。
在很多情況下,整數(shù)溢出應(yīng)該被處理為截?cái)?,即丟棄最高位。

浮點(diǎn)類型

Rust提供了基于IEEE 754-2008標(biāo)準(zhǔn)的浮點(diǎn)類型。按占據(jù)空間大小區(qū)分,分別為f32和f64,其使用方法與整型差別不大。浮點(diǎn)數(shù)字面量表示方式有如下幾種:
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
Infinite和Nan是帶來(lái)更多麻煩的特殊狀態(tài)。Infinite代表的是“無(wú)窮大”,Nan代表的是“不是數(shù)字”(not a number)。

指針類型

  • 同一個(gè)類型,某些時(shí)候可以指定它在棧上,某些時(shí)候可以指定它在堆上。內(nèi)存分配方式可以取決于使用方式,與類型本身無(wú)關(guān)。
  • 既可以直接訪問數(shù)據(jù),也可以通過(guò)指針間接訪問數(shù)據(jù)??梢葬槍?duì)任何一個(gè)對(duì)象取得指向它的指針。
  • 既可以在復(fù)合數(shù)據(jù)類型中直接嵌入別的類型的實(shí)體,也可以使用指針,間接指向別的類型。
  • 甚至可能在復(fù)合數(shù)據(jù)類型末尾嵌入不定長(zhǎng)數(shù)據(jù)構(gòu)造出不定長(zhǎng)的復(fù)合數(shù)據(jù)類型。Rust里面也有指針類型,而且不止一種指針類型。
    Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
    在標(biāo)準(zhǔn)庫(kù)中還有一種封裝起來(lái)的可以當(dāng)作指針使用的類型,叫“智能指針”(smart pointer)。

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

類型轉(zhuǎn)換

Rust對(duì)不同類型之間的轉(zhuǎn)換控制得非常嚴(yán)格。即便是下面這樣的程序,也會(huì)出現(xiàn)編譯錯(cuò)誤:
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
Rust提供了一個(gè)關(guān)鍵字as,專門用于這樣的類型轉(zhuǎn)換:
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

tuple

tuple指的是“元組”類型,它通過(guò)圓括號(hào)包含一組表達(dá)式構(gòu)成。tuple內(nèi)的元素沒有名字。tuple是把幾個(gè)類型組合到一起的最簡(jiǎn)單的方式。比如:Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端
元組內(nèi)部也可以一個(gè)元素都沒有。這個(gè)類型單獨(dú)有一個(gè)名字,叫unit(單元類型):let empty:()=();

可以說(shuō),unit類型是Rust中最簡(jiǎn)單的類型之一,也是占用空間最小的類型之一。
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

struct

結(jié)構(gòu)體(struct)與元組類似,也可以把多個(gè)類型組合到一起,作為新的類型。區(qū)別在于,它的每個(gè)元素都有自己的名字。舉個(gè)例子:

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

tuple struct

Rust有一種數(shù)據(jù)類型叫作tuple struct,它就像是tuple和struct的混合。區(qū)別在于,tuplestruct有名字,而它們的成員沒有名字:
Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端

enum

如果說(shuō)tuple、struct、tuple struct在Rust中代表的是多個(gè)類型的“與”關(guān)系,那么 enum類型在Rust中代表的就是多個(gè)類型的“或”關(guān)系。

Rust-類型,Rust,rust,開發(fā)語(yǔ)言,后端文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-792195.html

到了這里,關(guān)于Rust-類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Rust 基礎(chǔ)篇】Rust String 類型詳解

    在 Rust 中,String 是一種動(dòng)態(tài)可變的字符串類型,它提供了對(duì)字符串的靈活操作和修改能力。與字符串字面量(string literals)不同,String 類型是可變的,可以根據(jù)需要進(jìn)行修改。本篇博客將詳細(xì)介紹 Rust 中的 String 類型,包括定義、常用方法和使用示例。 在 Rust 中,可以使用

    2024年02月12日
    瀏覽(27)
  • Rust教程:How to Rust-基本類型

    本專欄是優(yōu)質(zhì)Rust技術(shù)專欄,推薦精通一門技術(shù)棧的蟹友,不建議完全無(wú)計(jì)算機(jī)基礎(chǔ)的同學(xué) 感謝Rust圣經(jīng)開源社區(qū)的同學(xué),為后來(lái)者提供了非常優(yōu)秀的Rust學(xué)習(xí)資源 本文使用: 操作系統(tǒng)macOS Sonoma 14 / Apple M1 編譯器:Rustc Cargo 感謝一路相伴的朋友們,感謝你們的支持 ^?_?^ Rust教

    2024年04月12日
    瀏覽(50)
  • Rust 基礎(chǔ)入門 —— 基本類型

    在Rust 中,作為強(qiáng)類型語(yǔ)言,自然會(huì)獨(dú)立一塊內(nèi)容用作類型管理工作,而rust 中 為應(yīng)用領(lǐng)域的擴(kuò)展, 兼容了很多的數(shù)學(xué)計(jì)算方面的 內(nèi)容,加到了基本類型中,例如 復(fù)數(shù), 在有向圖和 矢量圖計(jì)算中的應(yīng)用,rust 通過(guò)自帶的類型設(shè)計(jì)避免了 程序員再開發(fā)的任務(wù)難度。 總的來(lái)說(shuō)

    2024年02月12日
    瀏覽(19)
  • 深入理解Rust基本類型

    深入理解Rust基本類型

    ?? 團(tuán)隊(duì)博客: 汽車電子社區(qū) ??Rust基本類型有如下幾種: ????1、 數(shù)值類型 : 有符號(hào)整數(shù) (i8, i16, i32, i64, isize)、 無(wú)符號(hào)整數(shù) (u8, u16, u32, u64, usize) 、浮點(diǎn)數(shù) (f32, f64)、以及有理數(shù)、復(fù)數(shù)。 ????2、 字符串 :字符串字面量和字符串切片 str。 ????3、 布爾類型 :

    2024年01月20日
    瀏覽(19)
  • Rust-類型

    Rust-類型

    布爾類型(bool)代表的是“是”和“否”的二值邏輯。它有兩個(gè)值:true和false。 一般用在邏輯表達(dá)式中,可以執(zhí)行“與”“或”“非”等運(yùn)算。 字符類型由char表示。它可以描述任何一個(gè)符合unicode標(biāo)準(zhǔn)的字符值。在代碼中,單個(gè)的字符字面量用單引號(hào)包圍。 字符類型字面量也

    2024年01月16日
    瀏覽(15)
  • Rust之通用集合類型

    在Rust語(yǔ)言中包含了一系列被稱為集合的數(shù)據(jù)結(jié)構(gòu)。大部分的數(shù)據(jù)結(jié)構(gòu)都代表著某個(gè)特定的值,但集合卻可以包含多個(gè)值。與內(nèi)置的數(shù)組與元組類型不同,這些集合將自己持有的數(shù)據(jù)存儲(chǔ)在了堆上。這意味著數(shù)據(jù)的大小不需要在編譯時(shí)確定,并且可以隨著程序的運(yùn)行按需擴(kuò)大或

    2024年02月15日
    瀏覽(24)
  • 3.Rust數(shù)據(jù)類型

    Rust 每個(gè)值都有其確切的數(shù)據(jù)類型,總的來(lái)說(shuō)可以分為兩類:基本類型和復(fù)合類型。 Rust是一個(gè)強(qiáng)類型語(yǔ)言與js不同,我們?cè)诼暶髯兞繒r(shí)就要指定該變量的類型,編譯器必須在編譯期知道我們所有變量的類型。當(dāng)然大多時(shí)聰明的編譯器可以自動(dòng)推導(dǎo)類型,但為了保證代碼質(zhì)量和

    2024年03月10日
    瀏覽(25)
  • rust學(xué)習(xí)-類型轉(zhuǎn)換

    根據(jù)其他類型生成自己 把其他類型轉(zhuǎn)為目的類型 要把任何類型轉(zhuǎn)換成 String,只需要實(shí)現(xiàn)那個(gè)類型的 ToString trait 實(shí)現(xiàn)fmt::Display trait,它會(huì)自動(dòng)提供 ToString,并且還可以用來(lái)打印類型 用 parse 函數(shù) 只要對(duì)目標(biāo)類型實(shí)現(xiàn)了 FromStr trait,就可以用 parse 把字符串轉(zhuǎn)換成目標(biāo)類型 “渦

    2024年02月11日
    瀏覽(20)
  • Rust- 類型轉(zhuǎn)換

    Rust is a statically typed language, which means that it emphasizes on knowing the types of all variables at compile time. The concept of type safety is very crucial in Rust, and the language provides several mechanisms for type conversion. Type conversion in Rust is explicit, meaning that you need to specify the type you want to convert to. Here are two com

    2024年02月14日
    瀏覽(16)
  • Rust 原生類型

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 Rust 學(xué)習(xí)系列 ,rust中的原生類型 標(biāo)量類型(scalar type) 布爾類型(bool):表示真假值。 字符類型(char):表示單個(gè)Unicode字符。 整數(shù)類型(integer):表示整數(shù)值,包括有符號(hào)和無(wú)符號(hào)整數(shù)。 有符號(hào)整

    2024年02月21日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包