Bird
Raised Fist0
Rustprogramming~5 mins

Module visibility in Rust - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the pub keyword do in Rust modules?
The pub keyword makes a module, function, or item visible outside its current module, allowing other parts of the program to access it.
Click to reveal answer
beginner
What is the default visibility of items inside a Rust module?
By default, items inside a Rust module are private and cannot be accessed from outside the module unless marked with pub.
Click to reveal answer
intermediate
How do you make a nested module visible outside its parent module?
You must mark both the nested module and its parent module as pub to make the nested module accessible from outside.
Click to reveal answer
intermediate
Explain the difference between pub(crate) and pub in Rust module visibility.
pub(crate) makes an item visible only within the current crate (project), while pub makes it visible everywhere, including other crates.
Click to reveal answer
beginner
Can a private function inside a public module be accessed from outside the module?
No, private functions inside a public module remain inaccessible from outside. Only items marked pub are accessible externally.
Click to reveal answer
What keyword makes a Rust module accessible from other modules?
Ause
Bmod
Cpub
Dextern
If a module is declared as pub but a function inside it is not, can the function be accessed outside?
ANo, because the function is private
BYes, because the module is public
COnly if the function is called inside the module
DOnly if the function is marked <code>pub(crate)</code>
What does pub(crate) mean in Rust?
AVisible only inside the current crate
BVisible only inside the current module
CVisible everywhere including other crates
DVisible only to external crates
How do you make a nested module accessible outside its parent module?
AUse <code>use</code> keyword
BMark only the parent module as <code>pub</code>
CMark only the nested module as <code>pub</code>
DMark both parent and nested modules as <code>pub</code>
What is the default visibility of a Rust module item?
APublic
BPrivate
CCrate-wide
DExternal
Explain how Rust controls access to modules and their contents using visibility keywords.
Think about how you protect your personal stuff in a room and decide who can enter.
You got /4 concepts.
    Describe the steps to make a nested module and its functions accessible from outside the crate.
    Visibility works like unlocking doors in a house to let guests in.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the pub keyword do in Rust module visibility?
      easy
      A. Makes a function or item accessible outside its module
      B. Makes a function private to its module
      C. Deletes the function from the module
      D. Renames the function for external use

      Solution

      1. Step 1: Understand the role of pub

        The pub keyword in Rust is used to make functions, structs, or other items accessible from outside the module they are defined in.
      2. Step 2: Contrast with default visibility

        By default, items are private and cannot be accessed outside their module unless marked with pub.
      3. Final Answer:

        Makes a function or item accessible outside its module -> Option A
      4. Quick Check:

        pub = public access [OK]
      Hint: Remember: pub means public, so others can use it [OK]
      Common Mistakes:
      • Thinking pub hides the item
      • Confusing pub with renaming
      • Assuming pub deletes the item
      2. Which of the following is the correct way to make a struct public in Rust?
      easy
      A. struct MyStruct { pub field: i32 }
      B. struct pub MyStruct { field: i32 }
      C. pub struct MyStruct { field: i32 }
      D. struct MyStruct pub { field: i32 }

      Solution

      1. Step 1: Recall correct syntax for public structs

        In Rust, to make a struct public, the pub keyword must come before the struct keyword.
      2. Step 2: Check placements of pub

        pub struct MyStruct { field: i32 } correctly places pub before struct. Placing pub inside the braces (on field), writing struct pub MyStruct, or struct MyStruct pub {} are incorrect.
      3. Final Answer:

        pub struct MyStruct { field: i32 } -> Option C
      4. Quick Check:

        pub struct is correct syntax [OK]
      Hint: pub goes before struct, not inside or after [OK]
      Common Mistakes:
      • Placing pub inside struct braces
      • Putting pub after struct name
      • Writing pub in the wrong order
      3. Given the code:
      pub mod outer {
          pub mod inner {
              pub fn greet() { println!("Hello!"); }
          }
      }
      
      fn main() {
          outer::inner::greet();
      }

      What will be the output when this code runs?
      medium
      A. No output
      B. Error: greet is private
      C. Error: inner module is private
      D. Hello!

      Solution

      1. Step 1: Check visibility of modules and function

        The outer module is public, containing pub mod inner with pub fn greet(), making them all accessible from main.
      2. Step 2: Confirm function call and output

        The call outer::inner::greet() is valid and will print "Hello!" to the console.
      3. Final Answer:

        Hello! -> Option D
      4. Quick Check:

        pub modules and functions allow access [OK]
      Hint: pub on modules and functions means accessible outside [OK]
      Common Mistakes:
      • Overlooking that the outer module needs pub
      • Thinking greet is private by default
      • Ignoring nested module visibility
      4. What is wrong with this Rust code?
      mod my_mod {
          fn secret() {
              println!("Secret function");
          }
      }
      
      fn main() {
          my_mod::secret();
      }
      medium
      A. secret function is private and cannot be called from main
      B. Missing semicolon after println!
      C. Module my_mod is not declared public
      D. Function secret must have pub keyword inside main

      Solution

      1. Step 1: Check function visibility

        The function secret is not marked pub, so it is private to my_mod.
      2. Step 2: Understand call from main

        Since main is outside my_mod, it cannot call a private function, causing a compile error.
      3. Final Answer:

        secret function is private and cannot be called from main -> Option A
      4. Quick Check:

        Private functions can't be accessed outside module [OK]
      Hint: Private functions can't be called outside their module [OK]
      Common Mistakes:
      • Thinking module must be pub to call function
      • Assuming missing semicolon causes error
      • Believing pub inside main is needed
      5. You have a private struct Config inside a module, but want to allow other modules to create instances with limited access to its fields. Which visibility setup is correct?
      hard
      A. Make struct private and fields public
      B. Make struct pub but keep fields private
      C. Make both struct and fields private
      D. Keep struct private and make fields pub

      Solution

      1. Step 1: Understand struct and field visibility

        Making the struct pub allows other modules to create instances, but keeping fields private restricts direct access to internal data.
      2. Step 2: Evaluate other approaches

        Keeping the struct private (with or without pub fields) prevents other modules from constructing instances. Making everything private blocks access entirely.
      3. Final Answer:

        Make struct pub but keep fields private -> Option B
      4. Quick Check:

        pub struct + private fields = controlled access [OK]
      Hint: pub struct with private fields controls access well [OK]
      Common Mistakes:
      • Making fields pub but struct private (no instance creation)
      • Making everything private (no access)
      • Exposing fields unintentionally
      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