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

深入理解Rust函數(shù)

這篇具有很好參考價值的文章主要介紹了深入理解Rust函數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


??團隊博客: 汽車電子社區(qū)


一、概述

深入理解Rust函數(shù),編程語言,# Rust,rust,開發(fā)語言,后端,安全架構(gòu),車載系統(tǒng)

二、函數(shù)要點

??1、函數(shù)名和變量名使用蛇形命名法(snake case),例如 fn add_two() -> {}。
??2、函數(shù)的位置可以隨便放,Rust 不關(guān)心我們在哪里定義了函數(shù),只要有定義即可。
??3、每個函數(shù)參數(shù)都需要標注類型。

三、函數(shù)參數(shù)

??Rust 是強類型語言,因此需要你為每一個函數(shù)參數(shù)都標識出它的具體類型,例如:

fn main() {
    another_function(5, 6.1);
}

fn another_function(x: i32, y: f32) {
    println!("The value of x is: {}", x);
    println!("The value of y is: {}", y);
}

四、函數(shù)返回

??在 Rust 中函數(shù)就是表達式,因此我們可以把函數(shù)的返回值直接賦給調(diào)用者。
??函數(shù)的返回值就是函數(shù)體最后一條表達式的返回值,當然我們也可以使用 return 提前返回,下面的函數(shù)使用最后一條表達式來返回一個值:

fn plus_five(x:i32) -> i32 {
    x + 5
}

fn main() {
    let x = plus_five(5);

    println!("The value of x is: {}", x);
}

??來看兩個重點:
????1、let x = plus_five(5),說明我們用一個函數(shù)的返回值來初始化 x 變量,因此側(cè)面說明了在 Rust 中函數(shù)也是表達式,這種寫法等同于 let x = 5 + 5;。
????2、x + 5 沒有分號,因為它是一條表達式,這個在上一節(jié)中我們也有詳細介紹。
??再來看一段代碼,同時使用 return 和表達式作為返回值:

fn plus_or_minus(x:i32) -> i32 {
    if x > 5 {
        return x - 5
    }

    x + 5
}

fn main() {
    let x = plus_or_minus(5);

    println!("The value of x is: {}", x);
}

??plus_or_minus 函數(shù)根據(jù)傳入 x 的大小來決定是做加法還是減法,若 x > 5 則通過 return 提前返回 x - 5 的值,否則返回 x + 5 的值。

五、Rust中的特殊返回類型

5.1、無返回值

??單元類型 (),是一個零長度的元組。它沒啥作用,但是可以用來表達一個函數(shù)沒有返回值:
????1、函數(shù)沒有返回值,那么返回一個 ()。
????2、通過 ; 結(jié)尾的表達式返回一個 ()。
??例如下面的 report 函數(shù)會隱式返回一個 ():

use std::fmt::Debug;

fn report<T: Debug>(item: T) {
  println!("{:?}", item);

}

??與上面的函數(shù)返回值相同,但是下面的函數(shù)顯式的返回了 ():

fn clear(text: &mut String) -> () {
  *text = String::from("");
}

??在實際編程中,你會經(jīng)常在錯誤提示中看到該 () 的身影出沒,假如你的函數(shù)需要返回一個 u32 值,但是如果你不幸的以 表達式; 的方式作為函數(shù)的最后一行代碼,就會報錯:

fn add(x:u32,y:u32) -> u32 {
    x + y;
}

??只有表達式能返回值,而 ; 結(jié)尾的是語句,在 Rust 中,一定要嚴格區(qū)分表達式和語句的區(qū)別,這個在其它語言中往往是被忽視的點。

5.2、永不返回的發(fā)散函數(shù)

??當用 ! 作函數(shù)返回類型的時候,表示該函數(shù)永不返回( diverge function ),特別的,這種語法往往用做會導致程序崩潰的函數(shù):

fn dead_end() -> ! {
  panic!("你已經(jīng)到了窮途末路,崩潰吧!");
}

??下面的函數(shù)創(chuàng)建了一個無限循環(huán),該循環(huán)永不跳出,因此函數(shù)也永不返回:文章來源地址http://www.zghlxwxcb.cn/news/detail-814854.html

fn forever() -> ! {
  loop {
    //...
  };
}

到了這里,關(guān)于深入理解Rust函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Rust編程語言入門之模式匹配

    模式是Rust中的一種特殊語法,用于匹配復雜和簡單類型的結(jié)構(gòu) 將模式與匹配表達式和其他構(gòu)造結(jié)合使用,可以更好地控制程序的控制流 模式由以下元素(的一些組合)組成: 字面值 解構(gòu)的數(shù)組、enum、struct 和 tuple 變量 通配符 占位符 想要使用模式,需要將其與某個值進行

    2023年04月22日
    瀏覽(24)
  • Rust編程語言入門之無畏并發(fā)

    Concurrent:程序的不同部分之間獨立的執(zhí)行(并發(fā)) Parallel:程序的不同部分同時運行(并行) Rust無畏并發(fā):允許你編寫沒有細微Bug的代碼,并在不引入新Bug的情況下易于重構(gòu) 注意:本文中的”并發(fā)“泛指 concurrent 和 parallel 在大部分OS里,代碼運行在進程(process)中,OS同時

    2023年04月19日
    瀏覽(26)
  • Rust編程語言入門之智能指針

    指針:一個變量在內(nèi)存中包含的是一個地址(指向其它數(shù)據(jù)) Rust 中最常見的指針就是”引用“ 引用: 使用 借用它指向的值 沒有其余開銷 最常見的指針類型 智能指針是這樣一些數(shù)據(jù)結(jié)構(gòu): 行為和指針相似 有額外的元數(shù)據(jù)和功能 通過記錄所有者的數(shù)量,使一份數(shù)據(jù)被多個

    2023年04月16日
    瀏覽(26)
  • Rust編程語言入門之高級特性

    不安全 Rust 高級 Trait 高級 類型 高級函數(shù)和閉包 宏 隱藏著第二個語言,它沒有強制內(nèi)存安全保證:Unsafe Rust(不安全的 Rust) 和普通的 Rust 一樣,但提供了額外的“超能力” Unsafe Rust 存在的原因: 靜態(tài)分析是保守的。 使用 Unsafe Rust:我知道自己在做什么,并承擔相應風險

    2023年04月24日
    瀏覽(21)
  • 如何在 macOS 上安裝 Rust 編程語言

    如何在 macOS 上安裝 Rust 編程語言

    安裝Rust編程語言在Mac上是一個相對簡單的過程,但它可能會涉及多個步驟。在本文中,我將詳細說明如何在Mac上安裝Rust,并提供一些常見問題的解決方法。請注意,由于軟件和工具可能會發(fā)生變化,因此建議首先查看Rust官方網(wǎng)站以獲取最新的安裝說明。 目錄 1.打開終端 2

    2024年02月01日
    瀏覽(30)
  • Go 與 Rust:現(xiàn)代編程語言的深度對比

    Go 與 Rust:現(xiàn)代編程語言的深度對比

    在快速發(fā)展的軟件開發(fā)領(lǐng)域中,選擇合適的編程語言對項目的成功至關(guān)重要。Go 和 Rust 是兩種現(xiàn)代編程語言,它們都各自擁有一系列獨特的特性和優(yōu)勢。本文旨在深入比較 Go 和 Rust,從不同的角度分析這兩種語言,包括性能、語言特性、生態(tài)系統(tǒng)、適用場景以及社區(qū)支持。

    2024年04月13日
    瀏覽(31)
  • 【跟小嘉學 Rust 編程】十七、面向?qū)ο笳Z言特性

    【跟小嘉學 Rust 編程】一、Rust 編程基礎(chǔ) 【跟小嘉學 Rust 編程】二、Rust 包管理工具使用 【跟小嘉學 Rust 編程】三、Rust 的基本程序概念 【跟小嘉學 Rust 編程】四、理解 Rust 的所有權(quán)概念 【跟小嘉學 Rust 編程】五、使用結(jié)構(gòu)體關(guān)聯(lián)結(jié)構(gòu)化數(shù)據(jù) 【跟小嘉學 Rust 編程】六、枚舉

    2024年02月10日
    瀏覽(36)
  • 【編程】Rust語言入門第4篇 字符串

    Rust 中的字符是 Unicode 類型,因此每個字符占據(jù) 4 個字節(jié)內(nèi)存空間,但字符串不一樣,字符串是 UTF-8 編碼,也就是字符串中的字符所占的字節(jié)數(shù)是變化的(1 - 4)。 常見的字符串有兩種: str,通常是引用類型, str ,即字符串字面常量,字符串切片。 std::string::String 類型 str 的變

    2024年02月20日
    瀏覽(26)
  • Rust編程語言入門之cargo、crates.io

    通過 release profile 來自定義構(gòu)建 在https://crates.io/上發(fā)布庫 通過 workspaces 組織大工程 從 https://crates.io/來安裝庫 使用自定義命令擴展 cargo release profile: 是預定義的 可自定義:可使用不同的配置,對代碼編譯擁有更多的控制 每個 profile 的配置都獨立于其它的 profile cargo 主要的

    2023年04月09日
    瀏覽(28)
  • Golang vs Rust ——服務端編程應該選擇哪種語言

    Golang vs Rust ——服務端編程應該選擇哪種語言

    為服務端編程選擇一種語言應該基于你的長期目標和項目的要求,因此,盲目地問我應該雇用 Go 開發(fā)人員還是應該選擇 Rust 進行開發(fā)并不能幫助你解決問題。 然而,如果你發(fā)現(xiàn)自己陷入了困境,那么這篇文章將為你解惑。下面讓我們開始吧。 Go 是一種靜態(tài)類型的、AOT 編譯的

    2024年02月02日
    瀏覽(41)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包