亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Rust?use關鍵字妙用及模塊內容拆分方法

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

前言

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

1、rust 中的use關鍵字

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

1.1、將模塊標識符引入當前作用域

  • use 關鍵字能夠將模塊標識符引入當前作用域
  • 但是謹記引入的時候也遵循私有權限的原則

例如:

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ù),是報錯內容

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

1.2、use特點與習慣用法

我們習慣這樣使用 use:

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

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

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

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

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

  • 引入過后直接使用即可

例如:

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

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

例如:

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

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

5.針對同名條目可以使用as關鍵字來重命名類型

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

例如:

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

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

1.3、使用pub use 重新導出名稱

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

1.4、使用外部包(package)以及標準庫

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

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

3.標準庫(std)也被當作外部包

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

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

當使用同一個包或模塊下的多個條目時:

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

例如:

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、通配符 *

  • 使用*可以把路徑中所有的公共條目都引入到作用域
  • 需要謹慎使用,作用場景:
  • 測試:將所有被測試代碼引入到 tests 模塊(后續(xù)文章會有)
  • 有時被用于預導入(prelude)模塊

2、模塊內容拆分

將模塊拆分為不同文件:

  • 模塊定義時,如果模塊名后面是;而不是代碼塊:
  • Rust 會從與模塊同名的文件中加載內容,例如:

在這里插入圖片描述

在這里插入圖片描述

此時的lib.rs里不會報錯,編譯器看到mod front_of_house; 會在根目錄src處找到front_of_house文件夾里的hosting.rs文件,使用pub use將函數(shù)引入到當前作用域(必須嚴格按照圖示建立文件夾和文件)

  • 模塊樹的結構不會發(fā)生變化

隨著模塊逐漸變大,該技術讓你可以把模塊的內容移動到其他文件中

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

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

相關文章

  • Rust中Cargo的使用詳解

    Rust中Cargo的使用詳解

    Cargo 是 Rust 的構建系統(tǒng)和包管理器,?多數(shù) Rustacean 們使? Cargo 來管理他們的 Rust 項?,因為它可以為你處理很多任務,?如構建代碼、下載依賴庫并編譯這些庫,這篇文章主要介紹了Rust中Cargo的使用,需要的朋友可以參考下
    2022-11-11
  • Rust實現(xiàn)面向對象的方法

    Rust實現(xiàn)面向對象的方法

    這篇文章主要介紹了Rust實現(xiàn)面向對象的方法,Rust?并不是面向對象的語言,但是面向對象的功能都可以通過自身的特點來實現(xiàn),本文通過示例代碼給大家詳細講解,需要的朋友可以參考下
    2022-10-10
  • Rust字符串字面值的一些經驗總結

    Rust字符串字面值的一些經驗總結

    字符串有兩種表現(xiàn)形式,一種是基本類型,表示字符串的切片,以&str表示,另一種是可變的string類型,下面這篇文章主要給大家介紹了關于Rust字符串字面值的相關資料,需要的朋友可以參考下
    2022-04-04
  • rust的package,crate,module示例解析

    rust的package,crate,module示例解析

    rust提供了非常優(yōu)秀的包管理器cargo,我們可以使用crate,module,package來組織代碼,這篇文章主要介紹了rust的package,crate,module相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • MacBook Pro安裝rust編程環(huán)境的過程

    MacBook Pro安裝rust編程環(huán)境的過程

    rustup是一個用于管理Rust版本和工具鏈的工具,這篇文章主要介紹了MacBook Pro安裝rust編程環(huán)境的過程,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 深入了解Rust的生命周期

    深入了解Rust的生命周期

    生命周期指的是引用保持有效的作用域,Rust的每個引用都有自己的生命周期。本文將通過示例和大家詳細說說Rust的生命周期,需要的可以參考一下
    2022-12-12
  • Rust 原始指針功能探索

    Rust 原始指針功能探索

    這篇文章主要為大家介紹了Rust 原始指針功能探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • rust文件讀寫的實現(xiàn)示例

    rust文件讀寫的實現(xiàn)示例

    Rust語言提供了強大的文件讀寫庫,使得開發(fā)者可以更加方便地進行文件操作,并且其安全性可以有效避免文件操作中可能出現(xiàn)的風險,本文就來詳細的介紹了rust文件讀寫的實現(xiàn)示例,感興趣的可以了解一下
    2023-12-12
  • 一文掌握Rust編程中的生命周期

    一文掌握Rust編程中的生命周期

    在Rust語言中, 每一個引用都有其生命周期, 通俗講就是每個引用在程序執(zhí)行的過程中都有其自身的作用域, 一旦離開其作用域, 其生命周期也宣告結束, 值不再有效,這篇文章主要介紹了Rust編程中的生命周期,需要的朋友可以參考下
    2023-11-11
  • 關于Rust?使用?dotenv?來設置環(huán)境變量的問題

    關于Rust?使用?dotenv?來設置環(huán)境變量的問題

    在項目中,我們通常需要設置一些環(huán)境變量,用來保存一些憑證或其它數(shù)據(jù),這時我們可以使用dotenv這個crate,接下來通過本文給大家介紹Rust?使用dotenv來設置環(huán)境變量的問題,感興趣的朋友一起看看吧
    2022-01-01

最新評論