Rust 的可見性級別:訪問控制
在 Rust 中,可見性級別決定了成員 (函數、結構、枚舉等) 在不同模塊和 crate 中的可訪問性。默認情況下,各成員的可見性是私有的,這意味着它們只能在當前模塊內被訪問。你可以使用可見性修飾符來更改各成員的可見性。
Rust 的可見性級別
- Private (沒有修飾符)
private 在 Rust 中是默認的,表示私有的,沒有修飾符。它們只能在當前模塊內訪問,而不能從其他模塊或 crate 訪問,這是最具限制性的可見性級別。
fn private_function() {
// 此函數只能在其模塊內訪問
}
- Public (pub)
當一個成員被標記爲 pub 時,它就可以從任何模塊被公開訪問,包括依賴於當前 crate 的外部 crate,這是最寬容的可見性級別。
pub fn public_function() {
// 該功能可以被任何模塊和外部crate訪問
}
- crate 級別 (pub(crate))
標記爲 pub(crate) 的成員在當前 crate 內是公開的,這意味着可以在當前 crate 內的任何模塊訪問它。但是,它不能被依賴於當前 crate 的其他 crate 訪問。當你希望在內部公開,同時對外部用戶隱藏時,這種級別的可見性非常有用。
pub(crate) fn crate_level_function() {
// 此功能僅在當前crate中可訪問
}
- Super 級別 (pub(super))
pub(super)可見性級別使成員在父模塊 (上一級) 及其子模塊中公開。當你希望將一個成員公開給父模塊,但限制來自不相關模塊的訪問時,它非常有用。
pub(super) fn super_level_function() {
// 該函數可在父模塊及其子模塊中訪問
}
- 基於路徑 (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