Important Rust Topics
Rust Modules and pub
Organize code into modules and decide what the rest of the program may use.
What you'll learn
- mod and pub
- Paths with ::
- use and super
mod geometry
geometrypub circle_areapublicsquareprivatepub mod convertto_degrees
Private unless marked pub
A module groups related functions, types and constants under a name. Everything in a module is private unless it is marked pub, so a module can hide its details.
circle_area is public, but square is private and can only be called inside geometry. Paths use ::, and super refers to the parent module. use brings a name into scope so to_degrees can be called without its full path.
Key points
- Everything in a module is private by default.
- pub makes an item usable from outside.
- use brings a name into scope.
Runnable Rust example
Rust
main.rs
mod geometry {
pub const PI: f64 = 3.14159;
pub fn circle_area(radius: f64) -> f64 {
PI * square(radius)
}
fn square(value: f64) -> f64 {
value * value
}
pub mod convert {
pub fn to_degrees(radians: f64) -> f64 {
radians * 180.0 / super::PI
}
}
}
use geometry::convert::to_degrees;
fn main() {
println!("{:.2}", geometry::circle_area(2.0));
println!("{:.1}", to_degrees(geometry::PI));
}
12.57
180.0Practice
Open the example in the online compiler, change a value or add a line, and predict the output before you run it. Then break the code on purpose and read the compiler's message.
Finished this lesson?
Mark it as learned to track your progress.
Your progress is saved in this browser Sign in to keep it on every device.
Practice with a challenge
Use what this lesson covers to solve a real problem. Each challenge runs in your browser with instant tests and an AI review.
All challenges