• Rust成员的可见性级别有哪些?
  • 发布于 2个月前
  • 166 热度
    0 评论
在Rust中,可见性级别决定了成员(函数、结构、枚举等)在不同模块和crate中的可访问性。默认情况下,各成员的可见性是私有的,这意味着它们只能在当前模块内被访问。你可以使用可见性修饰符来更改各成员的可见性。

Rust的可见性级别
1. Private (没有修饰符)
private在Rust中是默认的,表示私有的,没有修饰符。它们只能在当前模块内访问,而不能从其他模块或crate访问,这是最具限制性的可见性级别。
fn private_function() {
    // 此函数只能在其模块内访问
}
2. Public (pub)
当一个成员被标记为pub时,它就可以从任何模块被公开访问,包括依赖于当前crate的外部crate,这是最宽容的可见性级别。
pub fn public_function() {
    // 该功能可以被任何模块和外部crate访问
}
3. crate级别 (pub(crate))
标记为pub(crate)的成员在当前crate内是公开的,这意味着可以在当前crate内的任何模块访问它。但是,它不能被依赖于当前crate的其他crate访问。当你希望在内部公开,同时对外部用户隐藏时,这种级别的可见性非常有用。
pub(crate) fn crate_level_function() {
    // 此功能仅在当前crate中可访问
}
4. Super级别 (pub(super))
pub(super)可见性级别使成员在父模块(上一级)及其子模块中公开。当你希望将一个成员公开给父模块,但限制来自不相关模块的访问时,它非常有用。
pub(super) fn super_level_function() {
    // 该函数可在父模块及其子模块中访问
}
5. 基于路径 (pub(in path::to::module))
使用此可见性级别,成员在指定的模块路径及其子模块中变为公共。这允许对成员的可见性进行细粒度控制。
pub(in crate::path::to::module) fn path_based_function() {
    // 此函数可在指定的模块及其子模块中访问
}
可见性的重要性
这些可见性级别允许你控制代码组件的公开级别,从而支持封装和模块化设计。理解并有效地使用它们有助于维护干净和有组织的代码库。通过仔细地为每个组件选择适当的可见性级别,你可以构建一个健壮且可维护的Rust项目。
用户评论