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

淺談Rust中聲明可見(jiàn)性

 更新時(shí)間:2024年05月15日 11:14:24   作者:許野平  
在Rust編程語(yǔ)言中,聲明可見(jiàn)性是一個(gè)核心概念,本文主要介紹了Rust中聲明可見(jiàn)性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在 Rust 編程語(yǔ)言中,聲明可見(jiàn)性是一個(gè)核心概念,它決定了代碼中的項(xiàng)(如函數(shù)、結(jié)構(gòu)體、枚舉等)在哪些范圍內(nèi)可以被訪問(wèn)。Rust 通過(guò)一套嚴(yán)謹(jǐn)?shù)囊?guī)則來(lái)控制這些可見(jiàn)性,以確保代碼的安全性和封裝性。下面,我們將通過(guò)一些例子來(lái)詳細(xì)探討 Rust 中的聲明可見(jiàn)性,特別是模塊的可見(jiàn)性和路徑的可見(jiàn)性。

默認(rèn)私有性

在 Rust 中,任何聲明的項(xiàng)默認(rèn)都是私有的。這意味著,除非顯式地改變其可見(jiàn)性,否則這些項(xiàng)只能在其被聲明的模塊內(nèi)部被訪問(wèn)。這種默認(rèn)私有性的設(shè)計(jì)有助于提高代碼的安全性,因?yàn)樗乐沽送獠看a對(duì)內(nèi)部實(shí)現(xiàn)的意外或惡意修改。

使用 pub 關(guān)鍵字

要將一個(gè)項(xiàng)聲明為公開(kāi)的,可以在其前面添加 pub 關(guān)鍵字。一旦一個(gè)項(xiàng)被聲明為 pub,它就可以在其定義模塊的外部被訪問(wèn)。例如:

mod my_module {
    // 私有函數(shù),只能在 my_module 內(nèi)部訪問(wèn)
    fn private_function() {
        println!("This is a private function.");
    }

    // 公開(kāi)函數(shù),可以在 my_module 外部訪問(wèn)
    pub fn public_function() {
        println!("This is a public function.");
    }
}

fn main() {
    // my_module::private_function(); // 錯(cuò)誤:私有函數(shù)無(wú)法在模塊外部訪問(wèn)
    my_module::public_function(); // 正確:公開(kāi)函數(shù)可以在模塊外部訪問(wèn)
}

在這個(gè)例子中,private_function 是私有的,只能在 my_module 內(nèi)部調(diào)用。嘗試在 main 函數(shù)中調(diào)用它會(huì)導(dǎo)致編譯錯(cuò)誤。而 public_function 是公開(kāi)的,可以在 my_module 外部被訪問(wèn)。

模塊的可見(jiàn)性

模塊的可見(jiàn)性也遵循相同的規(guī)則。默認(rèn)情況下,模塊是私有的,除非使用 pub mod 來(lái)聲明。這意味著,如果模塊是私有的,即使其內(nèi)部的項(xiàng)被聲明為 pub,外部也無(wú)法訪問(wèn)這些項(xiàng),因?yàn)闊o(wú)法訪問(wèn)包含它們的模塊。

mod parent_module {
    // 私有子模塊,外部無(wú)法直接訪問(wèn)
    mod private_child_module {
        pub fn public_function_in_private_module() {
            println!("This function is public within a private module.");
        }
    }

    // 公開(kāi)子模塊,外部可以訪問(wèn)
    pub mod public_child_module {
        pub fn public_function_in_public_module() {
            println!("This function is public within a public module.");
        }
    }
}

fn main() {
    // parent_module::private_child_module::public_function_in_private_module(); // 錯(cuò)誤:無(wú)法訪問(wèn)私有模塊
    parent_module::public_child_module::public_function_in_public_module(); // 正確:可以訪問(wèn)公開(kāi)模塊中的公開(kāi)函數(shù)
}

在這個(gè)例子中,private_child_module 是一個(gè)私有模塊,因此即使它包含一個(gè)公開(kāi)函數(shù) public_function_in_private_module,該函數(shù)也無(wú)法在 parent_module 外部被訪問(wèn)。相反,public_child_module 是一個(gè)公開(kāi)模塊,因此它的公開(kāi)函數(shù) public_function_in_public_module 可以在外部被訪問(wèn)。

路徑的可見(jiàn)性

除了直接使用 pub 關(guān)鍵字外,Rust 還提供了基于路徑的更細(xì)粒度的可見(jiàn)性控制。通過(guò)使用 pub(in path) 語(yǔ)法,你可以指定一個(gè)項(xiàng)只對(duì)給定的路徑可見(jiàn)。這允許你更精確地控制哪些模塊可以訪問(wèn)特定的項(xiàng)。

mod grandparent_module {
    pub mod parent_module {
        // 這個(gè)函數(shù)只對(duì) grandparent_module 內(nèi)部的模塊可見(jiàn)
        pub(in grandparent_module) fn semi_private_function() {
            println!("This function is semi-private.");
        }

        pub fn public_function() {
            println!("This function is public.");
        }
    }

    pub mod another_module {
        pub fn call_semi_private_function() {
            // 可以調(diào)用,因?yàn)?another_module 與 parent_module 都在 grandparent_module 內(nèi)部
            parent_module::semi_private_function();
        }
    }
}

fn main() {
    // grandparent_module::parent_module::semi_private_function(); // 錯(cuò)誤:這個(gè)函數(shù)在 grandparent_module 外部不可見(jiàn)
    grandparent_module::parent_module::public_function(); // 正確:公開(kāi)函數(shù)可以在任何地方訪問(wèn)
    grandparent_module::another_module::call_semi_private_function(); // 正確:因?yàn)檎{(diào)用發(fā)生在 grandparent_module 內(nèi)部
}

在這個(gè)例子中,semi_private_function 函數(shù)使用 pub(in grandparent_module) 語(yǔ)法聲明,這意味著它只對(duì) grandparent_module 內(nèi)部的模塊可見(jiàn)。因此,盡管 another_module 可以調(diào)用它(因?yàn)樗鼈兌荚?nbsp;grandparent_module 內(nèi)部),但 main 函數(shù)不能(因?yàn)樗?nbsp;grandparent_module 外部)。

通過(guò)合理地利用這些可見(jiàn)性規(guī)則,你可以確保代碼的安全性和封裝性,同時(shí)提供必要的訪問(wèn)權(quán)限給需要它的模塊。

到此這篇關(guān)于Rust中聲明可見(jiàn)性的文章就介紹到這了,更多相關(guān)Rust 聲明可見(jiàn)性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rust 入門之函數(shù)和注釋實(shí)例詳解

    Rust 入門之函數(shù)和注釋實(shí)例詳解

    這篇文章主要為大家介紹了Rust 入門之函數(shù)和注釋實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Rust中的宏之聲明宏和過(guò)程宏詳解

    Rust中的宏之聲明宏和過(guò)程宏詳解

    Rust中的宏是一種強(qiáng)大的工具,可以幫助開(kāi)發(fā)人員編寫可重用、高效和靈活的代碼,這篇文章主要介紹了Rust中的宏:聲明宏和過(guò)程宏,需要的朋友可以參考下
    2023-04-04
  • Rust 語(yǔ)言中的 into() 方法及代碼實(shí)例

    Rust 語(yǔ)言中的 into() 方法及代碼實(shí)例

    在 Rust 中,into() 方法通常用于將一個(gè)類型的值轉(zhuǎn)換為另一個(gè)類型,這通常涉及到資源的所有權(quán)轉(zhuǎn)移,本文給大家介紹Rust 語(yǔ)言中的 into() 方法及代碼實(shí)例,感謝的朋友跟隨小編一起看看吧
    2024-03-03
  • Rust自定義安裝路徑的詳細(xì)圖文教程

    Rust自定義安裝路徑的詳細(xì)圖文教程

    工欲善其事必先利其器,無(wú)論是對(duì)小白還是大神來(lái)說(shuō),想要學(xué)習(xí) Rust 第一步那必須是 Rust 的環(huán)境配置,下面這篇文章主要給大家介紹了關(guān)于Rust自定義安裝路徑的詳細(xì)圖文教程,需要的朋友可以參考下
    2023-03-03
  • Rust語(yǔ)言中級(jí)教程之指針

    Rust語(yǔ)言中級(jí)教程之指針

    Rust中共有三種類型的指針,分別為引用,解引用,智能指針,這篇文章主要介紹了Rust語(yǔ)言中級(jí)教程之指針,需要的朋友可以參考下
    2023-05-05
  • Rust語(yǔ)言中的String和HashMap使用示例詳解

    Rust語(yǔ)言中的String和HashMap使用示例詳解

    這篇文章主要介紹了Rust語(yǔ)言中的String和HashMap使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Rust 多線程編程的實(shí)現(xiàn)

    Rust 多線程編程的實(shí)現(xiàn)

    在rust中,多線程編程不算困難,但是也需要留心和別的編程語(yǔ)言中不同的地方,本文主要介紹了Rust 多線程編程的實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • Rust?實(shí)現(xiàn)?async/await的詳細(xì)代碼

    Rust?實(shí)現(xiàn)?async/await的詳細(xì)代碼

    異步編程在 Rust 中的地位非常高,很多 crate 尤其是多IO操作的都使用了 async/await,這篇文章主要介紹了Rust?如何實(shí)現(xiàn)?async/await,需要的朋友可以參考下
    2022-09-09
  • rust解決嵌套——Option類型的map和and_then方法的使用

    rust解決嵌套——Option類型的map和and_then方法的使用

    這篇文章主要介紹了rust解決嵌套——Option類型的map和and_then方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Rust你不認(rèn)識(shí)的所有權(quán)

    Rust你不認(rèn)識(shí)的所有權(quán)

    所有權(quán)對(duì)大多數(shù)開(kāi)發(fā)者而言是一個(gè)新穎的概念,它是 Rust 語(yǔ)言為高效使用內(nèi)存而設(shè)計(jì)的語(yǔ)法機(jī)制。所有權(quán)概念是為了讓 Rust 在編譯階段更有效地分析內(nèi)存資源的有用性以實(shí)現(xiàn)內(nèi)存管理而誕生的概念
    2023-01-01

最新評(píng)論