src/modules/visibility.md
Modules are a privacy boundary:
foo, it's visible in all the
descendants of foo.# // Copyright 2022 Google LLC
# // SPDX-License-Identifier: Apache-2.0
#
mod outer {
fn private() {
println!("outer::private");
}
pub fn public() {
println!("outer::public");
}
mod inner {
fn private() {
println!("outer::inner::private");
}
pub fn public() {
println!("outer::inner::public");
super::private();
}
}
}
fn main() {
outer::public();
}
pub keyword to make modules public.Additionally, there are advanced pub(...) specifiers to restrict the scope of
public visibility.
pub(crate) visibility is a common pattern.