📖 Scenario: You are organizing a small Rust program that manages book information. To keep your code clean and easy to understand, you want to split it into modules.
🎯 Goal: You will create a module named library that contains a function to display a book's title. Then you will call this function from the main program.
📋 What You'll Learn
Create a module named library
Inside library, define a public function print_book_title that prints the book title
Call library::print_book_title from the main function
💡 Why This Matters
🌍 Real World
Modules help organize large programs by grouping related code together, making it easier to maintain and understand.
💼 Career
Understanding modules is essential for writing clean, scalable Rust code in professional software development.
Progress0 / 4 steps
1
Create the library module
Create a module named library using mod library { } syntax.
Rust
Hint
Use mod library { } to define the module.
2
Add a public function print_book_title inside library
Inside the library module, define a public function named print_book_title that prints "Book title: The Rust Book".
Rust
Hint
Use pub fn print_book_title() { println!("Book title: The Rust Book"); } inside the module.
3
Call print_book_title from main
In the main function, call the function print_book_title from the library module using library::print_book_title().
Rust
Hint
Call the function with library::print_book_title(); inside main.
4
Print the output
Run the program and print the output from calling library::print_book_title().
Rust
Hint
The program should print exactly Book title: The Rust Book.
Practice
(1/5)
1. What keyword do you use in Rust to define a new module inside a file?
easy
A. module
B. use
C. mod
D. pub
Solution
Step 1: Understand Rust module declaration
Rust uses the keyword mod to declare a module inside a file.
Step 2: Differentiate from other keywords
use imports modules, pub makes items public, and module is not a Rust keyword.
Final Answer:
mod -> Option C
Quick Check:
Keyword for defining modules = mod [OK]
Hint: Remember: 'mod' means module in Rust [OK]
Common Mistakes:
Using 'module' instead of 'mod'
Confusing 'use' with 'mod'
Forgetting 'mod' keyword
2. Which of the following is the correct syntax to declare a module named network in Rust?
easy
A. use network {}
B. module network {}
C. pub mod network() {}
D. mod network {}
Solution
Step 1: Recall correct module syntax
The correct syntax to declare a module is mod name { } without parentheses.
Step 2: Check each option
mod network {} uses mod network {} which is correct. module network {} uses 'module' which is invalid. pub mod network() {} adds parentheses which are not allowed. use network {} uses 'use' which is for importing.
Final Answer:
mod network {} -> Option D
Quick Check:
Module declaration = mod name {} [OK]
Hint: Modules use curly braces, no parentheses [OK]
Common Mistakes:
Adding parentheses after module name
Using 'module' instead of 'mod'
Confusing 'use' with 'mod'
3. What will be the output of this Rust code?
mod math {
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
}
fn main() {
println!("{}", math::add(3, 4));
}
medium
A. 7
B. Compilation error
C. math::add(3, 4)
D. 0
Solution
Step 1: Check module and function visibility
The function add is marked pub, so it can be accessed outside the module.
Step 2: Evaluate the function call
Calling math::add(3, 4) returns 3 + 4 = 7, which is printed.
Final Answer:
7 -> Option A
Quick Check:
Public function call returns sum = 7 [OK]
Hint: Public functions in modules can be called with module::function [OK]
A. Function 'helper' is private and cannot be accessed outside the module
B. Missing semicolon after println!
C. Module 'utils' is not declared correctly
D. Cannot call functions inside modules
Solution
Step 1: Check function visibility
The function helper is not marked pub, so it is private to the module.
Step 2: Understand access from main
Trying to call utils::helper() from outside causes a compilation error due to privacy.
Final Answer:
Function 'helper' is private and cannot be accessed outside the module -> Option A
Quick Check:
Private functions can't be called outside module [OK]
Hint: Add 'pub' to functions to access them outside modules [OK]
Common Mistakes:
Assuming all functions are public by default
Ignoring privacy rules
Thinking modules block all calls
5. You want to organize your Rust project by splitting code into two files: main.rs and network.rs. How do you correctly declare and use the network module in main.rs?
hard
A. Write pub mod network {} in main.rs and put code inside network.rs
B. Write mod network; in main.rs and make functions in network.rs public with pub
C. Write use network; in main.rs and declare mod network {} inside network.rs
D. Write extern crate network; in main.rs and import functions manually
Solution
Step 1: Understand module file linking
To link an external file as a module, use mod network; in main.rs. This tells Rust to load network.rs.
Step 2: Make functions public in network.rs
Functions inside network.rs must be marked pub to be accessible from main.rs.
Final Answer:
Write mod network; in main.rs and make functions in network.rs public with pub -> Option B
Quick Check:
Use mod filename; and pub functions for multi-file modules [OK]
Hint: Use 'mod filename;' in main and 'pub' for access [OK]
Common Mistakes:
Using 'use' instead of 'mod' to declare modules
Declaring mod inside the module file
Using extern crate for local modules
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.