Rust 的可見性級別:訪問控制

在 Rust 中,可見性級別決定了成員 (函數、結構、枚舉等) 在不同模塊和 crate 中的可訪問性。默認情況下,各成員的可見性是私有的,這意味着它們只能在當前模塊內被訪問。你可以使用可見性修飾符來更改各成員的可見性。

Rust 的可見性級別

  1. Private (沒有修飾符)

private 在 Rust 中是默認的,表示私有的,沒有修飾符。它們只能在當前模塊內訪問,而不能從其他模塊或 crate 訪問,這是最具限制性的可見性級別。

fn private_function() {
    // 此函數只能在其模塊內訪問
}
  1. Public (pub)

當一個成員被標記爲 pub 時,它就可以從任何模塊被公開訪問,包括依賴於當前 crate 的外部 crate,這是最寬容的可見性級別。

pub fn public_function() {
    // 該功能可以被任何模塊和外部crate訪問
}
  1. crate 級別 (pub(crate))

標記爲 pub(crate) 的成員在當前 crate 內是公開的,這意味着可以在當前 crate 內的任何模塊訪問它。但是,它不能被依賴於當前 crate 的其他 crate 訪問。當你希望在內部公開,同時對外部用戶隱藏時,這種級別的可見性非常有用。

pub(crate) fn crate_level_function() {
    // 此功能僅在當前crate中可訪問
}
  1. Super 級別 (pub(super))

pub(super)可見性級別使成員在父模塊 (上一級) 及其子模塊中公開。當你希望將一個成員公開給父模塊,但限制來自不相關模塊的訪問時,它非常有用。

pub(super) fn super_level_function() {
    // 該函數可在父模塊及其子模塊中訪問
}
  1. 基於路徑 (pub(in path::to::module))

使用此可見性級別,成員在指定的模塊路徑及其子模塊中變爲公共。這允許對成員的可見性進行細粒度控制。

pub(in crate::path::to::module) fn path_based_function() {
    // 此函數可在指定的模塊及其子模塊中訪問
}

可見性的重要性

這些可見性級別允許你控制代碼組件的公開級別,從而支持封裝和模塊化設計。理解並有效地使用它們有助於維護乾淨和有組織的代碼庫。通過仔細地爲每個組件選擇適當的可見性級別,你可以構建一個健壯且可維護的 Rust 項目。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Kdq21VzIXFLE77uVpEY3sA