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

30天拿下Rust之超級好用的“語法糖”

這篇具有很好參考價值的文章主要介紹了30天拿下Rust之超級好用的“語法糖”。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

概述

????????Rust語言的設(shè)計非常注重開發(fā)者的體驗,因此它包含了許多實用的“語法糖”。這些“語法糖”讓代碼更簡潔、易讀,同時保持了語言的強大和靈活性。

1、字符串插值

????????字符串插值允許我們在字符串中嵌入變量或表達式的值,使用{}作為占位符。

fn main() {
    let name = "CSDN";
    let text = format!("Hello {}", name);
    println!("{}", text);
}

2、if-let表達式

????????if let是if和let的結(jié)合,用于在if條件中同時進行模式匹配和解構(gòu)賦值。

fn main() {
    let x = Some(66);
    if let Some(value) = x {
            println!("value is: {}", value);
    } else {
            println!("value is None");
    }
}

3、Range表達式

????????..是不包含結(jié)束值的范圍操作符,..=是包含結(jié)束值的范圍操作符。

fn main() {
    for i in 1..=5 {
        println!("{}", i);
    }

    for i in 1..5 {
        println!("{}", i);
    }
}

4、閉包

????????閉包是匿名的函數(shù),它們可以捕獲其創(chuàng)建環(huán)境的變量。在下面的示例代碼中,閉包被用來過濾偶數(shù)。

fn main() {
    let numbers = vec![1, 2, 3, 4, 5];
    let even_numbers = numbers.iter().filter(|&x| x % 2 == 0).collect::<Vec<_>>();
    println!("{:?}", even_numbers);
}

5、推導(dǎo)式

????????通過#[derive(...)]屬性,Rust可以自動為結(jié)構(gòu)體或枚舉生成標(biāo)準(zhǔn)的方法實現(xiàn),比如:Debug、Eq、PartialEq等。在下面的示例代碼中,我們?yōu)镻erson結(jié)構(gòu)體類型使用了#[derive(Debug)]屬性,因此編譯器為我們自動生成了Debug Trait的實現(xiàn)。在main函數(shù)中,我們使用{:?}格式化占位符來打印person變量的調(diào)試信息。

#[derive(Debug)]
struct Person {
    name: String,
    age: u8,
}

fn main() {
    let person = Person {
        name: "Mike".to_string(),
        age: 24,
    };

    // 輸出:Person { name: "Mike", age: 24 }
    println!("{:?}", person);
}

6、使用結(jié)構(gòu)體更新語法

????????結(jié)構(gòu)體更新語法允許我們在創(chuàng)建或修改結(jié)構(gòu)體實例時,僅指定需要更改的字段,而其余字段則保持其默認值或現(xiàn)有值不變。這種語法特別適用于當(dāng)結(jié)構(gòu)體有很多字段,而只想改變其中一個或幾個字段時。

#[derive(Debug)]
struct Person {
    name: String,
    age: u8,
    city: String,
}

fn main() {
    let mut person = Person {
        name: "Mike".to_string(),
        age: 24,
        city: "London".to_string(),
    };

    // 除name字段外,其余字段保持不變
    person = Person {
        name: "Bob".to_string(),
        ..person
    };

    // 輸出: Person { name: "Bob", age: 24, city: "London" }
    println!("{:?}", person);
}

7、使用_忽略不關(guān)心的值

????????在解構(gòu)賦值時,可以使用_來忽略我們不關(guān)心的值。

fn main() {
    let (_, b) = (66, 99);
    // 輸出:99
    println!("{}", b);
}

8、使用?在表達式中處理Result

?????????操作符可以在Result類型的表達式中用來自動處理錯誤。如果Result是Err,則整個表達式立即返回錯誤。如果是Ok,則繼續(xù)執(zhí)行。

use std::fs::File;
use std::io::Read;

fn read_file(path: &str) -> Result<String, std::io::Error> {
    let mut file = File::open(path)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    Ok(contents)
}

fn main() {
    match read_file("example.txt") {
        Ok(contents) => println!("file contents: {}", contents),
        Err(error) => eprintln!("read file failed: {}", error),
    }
}

9、使用break 'label在嵌套循環(huán)中提前退出

????????通過在循環(huán)前使用標(biāo)簽(比如:下面的'outer:和'inner:),可以在嵌套循環(huán)中使用break 'label來提前退出指定標(biāo)簽的循環(huán)。

fn main() {
    'outer: for i in 0..5 {
        'inner: for j in 0..5 {
            if i == 2 && j == 2 {
                // 跳出外層循環(huán)
                break 'outer;
            }
            
            println!("({}, {})", i, j);
        }
    }
}

10、Deref轉(zhuǎn)換

????????Deref轉(zhuǎn)換允許通過*操作符自動解引用實現(xiàn)了Deref Trait的類型,從而訪問其內(nèi)部的值。這是一種隱式的類型轉(zhuǎn)換,使得代碼更加簡潔。文章來源地址http://www.zghlxwxcb.cn/news/detail-852946.html

use std::ops::Deref;

struct CustomBox<T> {
    value: T,
}

impl<T> Deref for CustomBox<T> {
    type Target = T;
    fn deref(&self) -> &Self::Target {
        &self.value
    }
}

fn main() {
    let my_box = CustomBox { value: 66 };
    // 通過Deref轉(zhuǎn)換,可以直接解引用MyBox實例,從而訪問其內(nèi)部的value字段
    println!("{}", *my_box);
}

到了這里,關(guān)于30天拿下Rust之超級好用的“語法糖”的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 30天拿下Rust之輸入輸出

    概述 ????????在軟件開發(fā)中,輸入輸出(I/O)是任何應(yīng)用程序的基本構(gòu)建模塊。Rust作為一門注重安全和性能的語言,在其標(biāo)準(zhǔn)庫中提供了強大的I/O功能。這些功能使得Rust程序員能夠非常輕松地進行標(biāo)準(zhǔn)I/O、文件讀寫等操作。 標(biāo)準(zhǔn)I/O ????????在Rust中,標(biāo)準(zhǔn)輸入通常通

    2024年03月24日
    瀏覽(21)
  • 30天拿下Rust之生命周期

    概述 ????????在Rust中,生命周期是一個非常重要的概念,是保證內(nèi)存安全和防止懸垂引用的核心機制之一。通過精確地跟蹤引用的生命周期,Rust能夠在編譯階段就防止許多其他語言在運行時才會遇到的內(nèi)存問題。在Rust中,生命周期代表了引用的有效時間段。當(dāng)我們創(chuàng)建

    2024年03月20日
    瀏覽(29)
  • 30天拿下Rust之Trait

    概述 ????????在Rust中,Trait是一個核心概念,它允許我們定義類型應(yīng)該具有的行為。Trait類似于其他語言中的接口,但Rust的Trait更為強大和靈活。它不僅定義了一組方法,還允許我們指定方法的默認實現(xiàn)、泛型約束和繼承。通過Trait,我們可以定義一組方法的簽名和關(guān)聯(lián)類

    2024年03月17日
    瀏覽(23)
  • 30天拿下Rust之HashMap

    概述 ????????HashMap,被稱為哈希表或散列表,是一種可以存儲鍵值對的數(shù)據(jù)結(jié)構(gòu)。它使用哈希函數(shù)將鍵映射到存儲位置,以便可以快速檢索和更新元素。這種數(shù)據(jù)結(jié)構(gòu)在許多編程語言中都存在,而在Rust中,它被實現(xiàn)為HashMapK, V。其中,K表示鍵的類型,V表示值的類型。H

    2024年03月17日
    瀏覽(19)
  • 30天拿下Rust之圖形編程

    30天拿下Rust之圖形編程

    概述 ????????Rust語言以其卓越的安全性、性能和可靠性贏得了廣大開發(fā)者的青睞,逐漸在系統(tǒng)編程、網(wǎng)絡(luò)服務(wù)、游戲開發(fā)等領(lǐng)域嶄露頭角。隨著Rust生態(tài)的日益繁榮,圖形編程領(lǐng)域也涌現(xiàn)出一批優(yōu)秀的框架和庫,使得用Rust進行高效、安全的圖形應(yīng)用開發(fā)成為可能。 圖形庫

    2024年04月17日
    瀏覽(20)
  • 30天拿下Rust之錯誤處理

    30天拿下Rust之錯誤處理

    概述 ????????在軟件開發(fā)領(lǐng)域,對錯誤的妥善處理是保證程序穩(wěn)定性和健壯性的重要環(huán)節(jié)。Rust作為一種系統(tǒng)級編程語言,以其對內(nèi)存安全和所有權(quán)的獨特設(shè)計而著稱,其錯誤處理機制同樣體現(xiàn)了Rust的嚴(yán)謹與實用。在Rust中,錯誤處理通常分為兩大類:不可恢復(fù)的錯誤和可

    2024年03月21日
    瀏覽(20)
  • 30天拿下Rust之字符串

    概述 ????????在Rust中,字符串是一種非常重要的數(shù)據(jù)類型,用于處理文本數(shù)據(jù)。Rust的字符串是以UTF-8編碼的字節(jié)序列,主要有兩種類型:str和String。其中,str是一個對字符數(shù)據(jù)的不可變引用,更像是對現(xiàn)有字符串?dāng)?shù)據(jù)的“視圖”,而String則是一個獨立、可變更的字符串實

    2024年03月12日
    瀏覽(16)
  • 30天拿下Rust之命令行參數(shù)

    概述 ????????在Rust中,命令行參數(shù)是程序從命令行接收的輸入,它們?yōu)槌绦蛱峁┝诉\行時配置和數(shù)據(jù)的靈活性。對于需要用戶交互或自動化腳本的Rust程序來說,正確地解析命令行參數(shù)至關(guān)重要。通過std::env::args和第三方庫(比如:clap),我們可以輕松地獲取和解析命令行

    2024年03月26日
    瀏覽(20)
  • 30天拿下Rust之所有權(quán)

    概述 ????????在編程語言的世界中,Rust憑借其獨特的所有權(quán)機制脫穎而出,為開發(fā)者提供了一種新穎而強大的工具來防止內(nèi)存錯誤。這一特性不僅確保了代碼的安全性,還極大地提升了程序的性能。在Rust中,所有權(quán)是一種編譯時檢查機制,用于追蹤哪些內(nèi)存或資源何時可

    2024年03月08日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包