最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Rust?use關(guān)鍵字妙用及模塊內(nèi)容拆分方法

 更新時(shí)間:2022年09月19日 11:40:20   作者:微涼秋意  
這篇文章主要介紹了Rust?use關(guān)鍵字妙用|模塊內(nèi)容拆分,文中還給大家介紹use關(guān)鍵字的習(xí)慣用法,快速引用自定義模塊內(nèi)容或標(biāo)準(zhǔn)庫,以此優(yōu)化代碼書寫,需要的朋友可以參考下

前言

書接上文,本篇補(bǔ)充rust 組織管理中模塊的細(xì)節(jié)知識(shí),比如模塊拆分。此外介紹use關(guān)鍵字的習(xí)慣用法,快速引用自定義模塊內(nèi)容或標(biāo)準(zhǔn)庫,以此優(yōu)化代碼書寫。

1、rust 中的use關(guān)鍵字

如果我說use與C/C++中的include或者是java、python中的import用法類似,想必此時(shí)的你定是頭一歪,腦子里蹦出兩個(gè)字——拿捏。沒錯(cuò),看完本篇文章心里會(huì)更加敞亮,變得自信滿滿。

1.1、將模塊標(biāo)識(shí)符引入當(dāng)前作用域

  • use 關(guān)鍵字能夠?qū)⒛K標(biāo)識(shí)符引入當(dāng)前作用域
  • 但是謹(jǐn)記引入的時(shí)候也遵循私有權(quán)限的原則

例如:

mod front_of_house{
    pub mod hosting{
        pub fn add_to_waitlist(){}
        fn some_fun(){}
    }
}

use crate::front_of_house::hosting;

pub fn eat_at_restaurant(){
    hosting::add_to_waitlist();
    hosting::add_to_waitlist();
    hosting::some_fun();
}//這里并不能使用some_fun()函數(shù),是報(bào)錯(cuò)內(nèi)容

我們可以看到front_of_house模塊中嵌套了一個(gè)公共模塊hosting,但是我們知道公共模塊里的內(nèi)容也需要有pub修飾才能被調(diào)用。因此沒有加pub關(guān)鍵字的第二個(gè)函數(shù)無法被調(diào)用,這就是遵循私有權(quán)限的體現(xiàn)。

1.2、use特點(diǎn)與習(xí)慣用法

我們習(xí)慣這樣使用 use:

1.不直接引入具體的函數(shù)或者方法

  • 我們可以這樣引入具體函數(shù):use crate::front_of_house::hosting::add_to_waitlist;
  • 當(dāng)代碼比較多的時(shí)候,我們很難區(qū)分一個(gè)函數(shù)是本地自定義還是引用,因此不具體引用

2.引用函數(shù)或者方法最近的父模塊

  • 不必引用最外層,以免代碼冗余

3.對(duì)于struct、enum 等函數(shù)以外的內(nèi)容需要指定到完整路徑(本身)

  • 引入過后直接使用即可

例如:

use std::collections::HashMap;
fn main() {
    let mut map=HashMap::new();
    map.insert(1, 2);
    println!("{:?}",map);
}
//打印結(jié)果:{1,2}

如果一個(gè)類型在不同的模塊中都有,那么就要引入到父模塊(同名條目)

例如:

use std::fmt;
use std::io;

fn f1()->fmt::Result{}
fn f2()->io ::Result{}

5.針對(duì)同名條目可以使用as關(guān)鍵字來重命名類型

  • 指定到完整路徑,給其中一個(gè)改名即可

例如:

use std::fmt::Result;
use std::io::Result as IOResult;

fn f1()-> Result<>{}
fn f2()-> IOResult<>{}

1.3、使用pub use 重新導(dǎo)出名稱

  • 使用 use 將路徑(名稱)導(dǎo)入到作用域后,該名稱在此作用域默認(rèn)是私有的,外部無法訪問
  • pub use:重導(dǎo)出
    • 將條目引入作用域
    • 該條目可以被外部代碼引入到自己的作用域

1.4、使用外部包(package)以及標(biāo)準(zhǔn)庫

  • Cargo.toml 添加依賴的包
  • 通過該網(wǎng)站自動(dòng)下載資源:https://crates.io/
  • 但是默認(rèn)網(wǎng)站是在國外,需要更換國內(nèi)鏡像
  • 這些內(nèi)容在此專欄有文章講的比較詳細(xì),不理解可以去翻閱一下

2.使用use將特定條目引入作用域

3.標(biāo)準(zhǔn)庫(std)也被當(dāng)作外部包

  • 無需修改Cargo.toml來包含std
  • 但是需要用 use 將 std 中的特定條目引入到當(dāng)前作用域

1.5、使用嵌套路徑清理大量 use 語句

當(dāng)使用同一個(gè)包或模塊下的多個(gè)條目時(shí):

  • 使用嵌套路徑在同一行內(nèi)將多個(gè)條目引入
  • 路徑相同的部分::{路徑差異的部分}

例如:

use std::io;
use std::cmp::Ordering;

use std::{io,cmp::Ordering};
//前兩行可用最后一行替代
  • 如果包含自身,需要使用self

例如:

use std::io;
use std::io::Write;

use std::io::{self,Write};
//依然是最后一行可替換前兩行

1.6、通配符 *

  • 使用*可以把路徑中所有的公共條目都引入到作用域
  • 需要謹(jǐn)慎使用,作用場(chǎng)景:
  • 測(cè)試:將所有被測(cè)試代碼引入到 tests 模塊(后續(xù)文章會(huì)有)
  • 有時(shí)被用于預(yù)導(dǎo)入(prelude)模塊

2、模塊內(nèi)容拆分

將模塊拆分為不同文件:

  • 模塊定義時(shí),如果模塊名后面是;而不是代碼塊:
  • Rust 會(huì)從與模塊同名的文件中加載內(nèi)容,例如:

在這里插入圖片描述

在這里插入圖片描述

此時(shí)的lib.rs里不會(huì)報(bào)錯(cuò),編譯器看到mod front_of_house; 會(huì)在根目錄src處找到front_of_house文件夾里的hosting.rs文件,使用pub use將函數(shù)引入到當(dāng)前作用域(必須嚴(yán)格按照?qǐng)D示建立文件夾和文件)

  • 模塊樹的結(jié)構(gòu)不會(huì)發(fā)生變化

隨著模塊逐漸變大,該技術(shù)讓你可以把模塊的內(nèi)容移動(dòng)到其他文件中

到這里 rust 的組織管理算是徹底告一段落了,這塊內(nèi)容不多,但是理解起來還是要下點(diǎn)功夫的

到此這篇關(guān)于Rustuse關(guān)鍵字妙用|模塊內(nèi)容拆分的文章就介紹到這了,更多相關(guān)Rustuse關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rust?HashMap詳解及單詞統(tǒng)計(jì)示例用法詳解

    Rust?HashMap詳解及單詞統(tǒng)計(jì)示例用法詳解

    HashMap在Rust中是一個(gè)強(qiáng)大的工具,通過合理使用可以簡(jiǎn)化很多與鍵值對(duì)相關(guān)的問題,在實(shí)際開發(fā)中,我們可以充分利用其特性,提高代碼的效率和可讀性,本文將深入介紹HashMap的特性,以及通過一個(gè)單詞統(tǒng)計(jì)的例子展示其用法,感興趣的朋友一起看看吧
    2024-02-02
  • Rust 枚舉和模式匹配的實(shí)現(xiàn)

    Rust 枚舉和模式匹配的實(shí)現(xiàn)

    枚舉是 Rust 中非常重要的復(fù)合類型,也是最強(qiáng)大的復(fù)合類型之一,廣泛用于屬性配置、錯(cuò)誤處理、分支流程、類型聚合等場(chǎng)景中,本文就來介紹一下Rust 枚舉和模式匹配,感興趣的可以了解一下
    2023-12-12
  • Rust中的宏之聲明宏和過程宏詳解

    Rust中的宏之聲明宏和過程宏詳解

    Rust中的宏是一種強(qiáng)大的工具,可以幫助開發(fā)人員編寫可重用、高效和靈活的代碼,這篇文章主要介紹了Rust中的宏:聲明宏和過程宏,需要的朋友可以參考下
    2023-04-04
  • Rust中::和.的區(qū)別解析

    Rust中::和.的區(qū)別解析

    Rust中的::和.是兩種常用的操作符,分別用于訪問命名空間中的成員和實(shí)例的字段或方法,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 在win10上使用mingw64編譯器配置Rust開發(fā)環(huán)境和idea 配置Rust 插件

    在win10上使用mingw64編譯器配置Rust開發(fā)環(huán)境和idea 配置Rust 插件

    在win10上配置 Rust 開發(fā)環(huán)境(使用 mingw64編譯器)和 idea 配置 Rust 插件的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-03-03
  • 深入理解 Rust 中的模式匹配語法(最新推薦)

    深入理解 Rust 中的模式匹配語法(最新推薦)

    Rust中的模式匹配提供了多種方式來處理不同的數(shù)據(jù)類型和場(chǎng)景,本文給大家介紹Rust 中的模式匹配語法,感興趣的朋友一起看看吧
    2025-03-03
  • rust聲明式宏的實(shí)現(xiàn)

    rust聲明式宏的實(shí)現(xiàn)

    聲明式宏使得你能夠?qū)懗鲱愃?match?表達(dá)式的東西,來操作你所提供的?Rust代碼,它使用你提供的代碼來生成用于替換宏調(diào)用的代碼,感興趣的可以了解一下
    2023-12-12
  • Rust中不可變變量與const的區(qū)別詳解

    Rust中不可變變量與const的區(qū)別詳解

    Rust作者認(rèn)為變量默認(rèn)應(yīng)該是immutable,即聲明后不能被改變的變量,這一點(diǎn)是讓跨語言學(xué)習(xí)者覺得很別扭,不過這一點(diǎn)小的改變帶來了諸多好處,本節(jié)我們來學(xué)習(xí)Rust中不可變變量與const的區(qū)別,需要的朋友可以參考下
    2024-02-02
  • 詳解Rust 生命周期符號(hào)使用的方法和規(guī)律

    詳解Rust 生命周期符號(hào)使用的方法和規(guī)律

    生命周期是 Rust 中處理引用和所有權(quán)的關(guān)鍵概念,通過正確使用生命周期符號(hào)和遵循相關(guān)規(guī)律,你可以編寫出安全、高效的 Rust 代碼,這篇文章主要介紹了Rust 生命周期符號(hào)使用的方法和規(guī)律,需要的朋友可以參考下
    2024-03-03
  • Rust 的 into_owned() 方法實(shí)例詳解

    Rust 的 into_owned() 方法實(shí)例詳解

    into_owned是Rust語言中std::borrow::Cow 枚舉的一個(gè)方法,into_owned確保了調(diào)用者獲得數(shù)據(jù)的獨(dú)立所有權(quán),無論Cow之前是引用還是已經(jīng)擁有數(shù)據(jù),本文給大家介紹Rust 的 into_owned() 方法,感興趣的的朋友跟隨小編一起看看吧
    2024-03-03

最新評(píng)論

江陵县| 胶州市| 合江县| 汕头市| 郓城县| 罗平县| 浦城县| 大关县| 张掖市| 高邮市| 勃利县| 拜泉县| 宜川县| 肥乡县| 陇西县| 壶关县| 图片| 涪陵区| 军事| 榆社县| 嵊州市| 烟台市| 抚宁县| 航空| 江口县| 类乌齐县| 兰西县| 合水县| 抚州市| 古蔺县| 赞皇县| 六枝特区| 双鸭山市| 巴彦淖尔市| 房产| 兴宁市| 嫩江县| 通城县| 长宁区| 太康县| 太原市|