P.MOD.01 合理控制对外接口和模块之间的可见性

【描述】

Rust提供强大的模块(module)系统,并且可以管理这些模块之间的可见性(公有(public)或私有(private))。

1、对于提供给其他crate使用的对外函数、结构体、trait等类型需要严格控制对外pub的范围,避免将内部成员对外提供。

2、对于crate内部,mod之间可见的类型,需要添加上pub(crate)

3、对于mod内部私有的类型,不要添加pub(crate) 或者pub

【正例】


#![allow(unused)]
fn main() {
// lib.rs
pub mod sha512;
pub use sha512::Sha512;

// sha512.rs
pub struct Sha512 {
    inner: Sha512Inner, // inner作为内部结构体,不添加pub描述
}

}