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

Rust 基礎(chǔ)入門 —— 基本類型

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

概述:

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

總的來說,rust 的數(shù)據(jù)類型分為兩類, 基本類型和 復(fù)合類型,這點(diǎn)和C++蠻像的。


接下來簡(jiǎn)單介紹一下 基本類型。然后進(jìn)一步介紹 語句和表達(dá)式、函數(shù)。

基本類型

  1. 數(shù)值類型
    1. 有符號(hào) 整形 (i8, i16, i32, i64, isize
    2. 無符號(hào) 整形(i8, i16, i32, i64, isize
    3. 浮點(diǎn) (f32, f64)
    4. 有理數(shù)
    5. 復(fù)數(shù)
  2. 字符串
    1. 字符串 字面量 (指 字符串)
    2. 字符串 切片 (&str
  3. 布爾類型 truefalse
  4. 字符類型 表示單個(gè) Unicode 字符,存儲(chǔ)為 4 個(gè)字節(jié)(這里和C++ 的 字符類型char 區(qū)分, char 只占一個(gè)字符
  5. 單元類型 即 () ,其唯一的值也是 ()
    1. 在Rust中單元類型,和元組是不一樣的,雖然都是有括號(hào)。
    2. 具體來說元組是一種可以包含多個(gè)不同類型的值的數(shù)據(jù)結(jié)構(gòu),而單元類型是一種沒有任何值的類型。元組可以用來組織和傳遞多個(gè)值,而單元類型主要用于表示函數(shù)沒有返回值的情況。
    3. 元組可以是空元組,其中沒有任何元素()表示。 和單元類型的區(qū)分在于所處位置。見下面代碼
fn return_unit() -> () {
    // 函數(shù)返回單元類型 這里的 -> 之后的() 就代表單元類型。
}

fn main() {
    let empty_tuple = ();
    let unit_value = return_unit();

    println!("{:?}", empty_tuple); // 輸出: ()
    println!("{:?}", unit_value); // 輸出: ()
}

靜態(tài)語言的類型推導(dǎo)

初次接觸類型推導(dǎo)是在 Python中, 后來在JavaScript 中也遇到一些, 但是在動(dòng)態(tài)語言中推導(dǎo)類型,明顯是會(huì)拉低運(yùn)行速度的,特別是復(fù)合類型傳遞。

靜態(tài)語言 rust 通過編譯器,也實(shí)現(xiàn)了類型推導(dǎo),但是這個(gè)其實(shí)可以類比C++中的正則表達(dá)式, 其實(shí)是讓編譯器自己決定是什么類型,然后按照對(duì)應(yīng)的類型編寫成匯編代碼,鏈接成程序。

所以靜態(tài)語言的類型推導(dǎo),不是運(yùn)行時(shí)推導(dǎo),靜態(tài)語言的類型推導(dǎo),是編譯時(shí)推導(dǎo)。 當(dāng)然這可能導(dǎo)致編譯時(shí)間過長(zhǎng)的問題,這個(gè)還需要再在后續(xù)使用中實(shí)際體驗(yàn)后才能記錄。

類型標(biāo)注

當(dāng)然,作為強(qiáng)類型,也不一定要全部推導(dǎo),可以通過對(duì)變量進(jìn)行類型標(biāo)注的操作,完成對(duì)類型的顯式說明,通過這樣的方式就可以減小推導(dǎo)時(shí)間,特別是在復(fù)合類型中應(yīng)用這樣的方式。

let guess = "42".parse().expect("Not a number!");
Compiling playground v0.0.1 (/playground)  
error[E0282]: type annotations needed  
--> src/main.rs:4:5  
|  
4 | let guess = "42".parse().expect("Not a number!");  
| ^^^^^  
|  
help: consider giving `guess` an explicit type  
|  
4 | let guess: /* Type */ = "42".parse().expect("Not a number!");  
| ++++++++++++  
  
For more information about this error, try `rustc --explain E0282`.  
error: could not compile `playground` (bin "playground") due to previous error

先忽略 .parse().expect.. 部分,這段代碼的目的是將字符串 "42" 進(jìn)行解析,而編譯器在這里無法推導(dǎo)出我們想要的類型:整數(shù)?浮點(diǎn)數(shù)?字符串?因此編譯器會(huì)報(bào)錯(cuò):

$ cargo build
   Compiling no_type_annotations v0.1.0 (file:///projects/no_type_annotations)
error[E0282]: type annotations needed
 --> src/main.rs:2:9
  |
2 |     let guess = "42".parse().expect("Not a number!");
  |         ^^^^^ consider giving `guess` a type

因此我們需要提供給編譯器更多的信息,例如給 guess 變量一個(gè)顯式的類型標(biāo)注let guess: i32 = ... 或者 "42".parse::<i32>()文章來源地址http://www.zghlxwxcb.cn/news/detail-519682.html

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

本文來自互聯(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)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包