Bird
Raised Fist0
Rustprogramming~20 mins

Why modules are used in Rust - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Rust Module Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Purpose of Modules in Rust

Why do Rust programmers use modules in their code?

ATo make the program run faster by compiling modules separately
BTo allow multiple main functions in the same project
CTo automatically generate documentation without comments
DTo organize code into separate namespaces and control visibility
Attempts:
2 left
💡 Hint

Think about how you keep your desk tidy by putting things in drawers.

❓ Predict Output
intermediate
2:00remaining
Output of Module Visibility Example

What is the output of this Rust code?

Rust
mod kitchen {
    pub fn cook() {
        println!("Cooking food");
    }
    fn clean() {
        println!("Cleaning kitchen");
    }
}

fn main() {
    kitchen::cook();
    // kitchen::clean(); // Uncommenting this line causes error
}
ACleaning kitchen
BCooking food
CCooking food\nCleaning kitchen
DCompilation error due to private function call
Attempts:
2 left
💡 Hint

Only functions marked pub can be called from outside the module.

🔧 Debug
advanced
2:00remaining
Fix the Module Import Error

Why does this Rust code cause a compilation error?

Rust
mod garden {
    pub fn plant() {
        println!("Planting seeds");
    }
}

fn main() {
    plant();
}
ACannot call functions from modules in main
BFunction plant is private; make it public
CFunction plant is not in scope; call it as garden::plant()
DMissing semicolon after mod garden declaration
Attempts:
2 left
💡 Hint

Think about how to access functions inside modules from outside.

📝 Syntax
advanced
2:00remaining
Identify the Syntax Error in Module Declaration

Which option contains the correct syntax to declare a module named tools with a public function hammer?

Amod tools { pub fn hammer() { println!("Hammering"); } }
Bmodule tools { pub fn hammer() { println!("Hammering"); } }
Cmod tools pub fn hammer() { println!("Hammering"); }
Dmod tools { fn hammer() pub { println!("Hammering"); } }
Attempts:
2 left
💡 Hint

Remember the keyword to declare a module and how to mark functions public.

🚀 Application
expert
3:00remaining
How Many Items Are Accessible?

Given this Rust code, how many items can be accessed from main?

Rust
mod library {
    pub mod books {
        pub fn read() {}
        fn secret() {}
    }
    fn helper() {}
    pub fn open() {}
}

fn main() {
    // Which of these can be called here?
    // library::open();
    // library::helper();
    // library::books::read();
    // library::books::secret();
}
A2
B3
C4
D1
Attempts:
2 left
💡 Hint

Count only public items accessible from main.

Practice

(1/5)
1. Why do Rust programmers use modules in their code?
easy
A. To organize code into smaller, manageable parts
B. To make the program run faster
C. To increase the size of the compiled file
D. To avoid writing comments

Solution

  1. Step 1: Understand the purpose of modules

    Modules help break down code into smaller parts that are easier to manage and understand.
  2. Step 2: Compare other options

    Options A, B, and D do not describe the main reason for using modules; they are unrelated to code organization.
  3. Final Answer:

    To organize code into smaller, manageable parts -> Option A
  4. Quick Check:

    Modules organize code = C [OK]
Hint: Modules help split code into parts for clarity [OK]
Common Mistakes:
  • Thinking modules speed up the program
  • Believing modules increase file size
  • Confusing modules with comments
2. Which of the following is the correct way to declare a module named math in Rust?
easy
A. module math { }
B. mod math { }
C. package math { }
D. use math { }

Solution

  1. Step 1: Recall Rust module syntax

    Rust uses the keyword mod to declare a module.
  2. Step 2: Check other options

    Options B, C, and D use incorrect keywords not valid in Rust for modules.
  3. Final Answer:

    mod math { } -> Option B
  4. Quick Check:

    Use mod to declare modules = A [OK]
Hint: Use 'mod' keyword to declare modules in Rust [OK]
Common Mistakes:
  • Using 'module' instead of 'mod'
  • Confusing 'use' with module declaration
  • Trying 'package' keyword like other languages
3. What will be the output of this Rust code?
mod greetings {
    pub fn hello() {
        println!("Hello from module!");
    }
}

fn main() {
    greetings::hello();
}
medium
A. Compilation error: module not found
B. Error: function hello is private
C. Hello from module!
D. No output

Solution

  1. Step 1: Check function visibility

    The function hello is marked pub, so it is accessible outside the module.
  2. Step 2: Understand function call

    The main function calls greetings::hello(), which prints the message.
  3. Final Answer:

    Hello from module! -> Option C
  4. Quick Check:

    Public function call prints message = D [OK]
Hint: Public functions in modules can be called outside [OK]
Common Mistakes:
  • Forgetting to use 'pub' makes function private
  • Assuming no output without checking visibility
  • Thinking module must be imported separately
4. Identify the error in this Rust code using modules:
mod tools {
    fn hammer() {
        println!("Hammering");
    }
}

fn main() {
    tools::hammer();
}
medium
A. Function hammer is private and cannot be accessed outside the module
B. Module tools is not declared correctly
C. Missing semicolon after println!
D. Cannot call functions inside modules

Solution

  1. Step 1: Check function visibility

    The function hammer is not marked pub, so it is private to the module.
  2. Step 2: Understand access rules

    Trying to call tools::hammer() from main causes an error because the function is private.
  3. Final Answer:

    Function hammer is private and cannot be accessed outside the module -> Option A
  4. Quick Check:

    Private function access error = A [OK]
Hint: Mark functions 'pub' to access outside modules [OK]
Common Mistakes:
  • Assuming all module functions are public by default
  • Thinking module declaration is wrong
  • Missing semicolon in println! (actually correct here)
5. You want to organize a Rust project with two modules: math and utils. The math module has a public function add that you want to use in utils. How should you structure the code to allow utils to call math::add?
hard
A. Make add private and call it directly from utils
B. Modules cannot call functions from each other
C. Define add inside utils instead of math
D. Declare both modules in the root, mark add as pub, and use use crate::math::add; inside utils

Solution

  1. Step 1: Make function public

    The add function must be marked pub to be accessible outside math.
  2. Step 2: Use 'use' to import function

    Inside utils, use use crate::math::add; to bring add into scope for calling.
  3. Final Answer:

    Declare both modules in the root, mark add as pub, and use use crate::math::add; inside utils -> Option D
  4. Quick Check:

    Public function + use import = B [OK]
Hint: Make functions pub and import with use to share between modules [OK]
Common Mistakes:
  • Leaving function private and expecting access
  • Trying to call private functions directly
  • Thinking modules cannot share code
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard