DEV Community

Cover image for Day22: Unveiling the Mysteries of Rust Modules and the use Keyword πŸ”±
Aniket Botre
Aniket Botre

Posted on

Day22: Unveiling the Mysteries of Rust Modules and the use Keyword πŸ”±

Arr matey! Grab yer compass and let's navigate the treacherous seas of Rust modulesβ€”a map to code treasures, if ye be brave enough. Picture modules as secret islands, keepin' their loot guarded. But fear not! The pub keyword be our trusty pirate flag, hoisting it high to claim the code booty.


Modules in Rust

Diving into Rust's realm, we encounter the concept of modules, serving as organized containers for functions, structs, traits, and even other modules. These modules enhance code structure and wield the power to control the visibility of their contents.

mod my_treasure {
    pub fn share_the_booty() {
        println!("Avast! This function be public gold!");
    }

    fn keep_hidden_treasure() {
        println!("Shh! This function be stashin' the secret loot!");
    }
}
Enter fullscreen mode Exit fullscreen mode

In this seafaring script, share_the_booty be in the limelight, thanks to the pub flag, while keep_hidden_treasure stays below decks, away from prying eyes.


The Swashbuckling use Keyword: No More Scrollin' the Code Seas πŸ—ΊοΈ

Hoist the Jolly Roger! The use keyword be our pirate's spyglass, bringin' paths into view with a swish of the cutlass. It be like charting a course with ease. Imagine a function, plunder_town, dwellin' in the mystical harbor of harboring. With the use sword, ye can call it in another function, raid_village, without breakin' a sweat.

mod harbor {
    pub mod harboring {
        pub fn plunder_town() {}
    }
}

use crate::harbor::harboring;

fn raid_village() {
    harboring::plunder_town();
}
Enter fullscreen mode Exit fullscreen mode

With this pirate's magic, the use spell crafts a shortcut, lettin' ye summon plunder_town directly like findin' buried treasure.


Advanced use Declarations: A Buccaneer's Ballet πŸ•Ί

Rust be a land of advanced tricks, and the use keyword be no different.

Rust offers advanced patterns in the use of the use keyword, showcasing its versatility:

  • Importing with a Common Prefix: Unifying multiple items under a common prefix using nested paths.

  • Renaming Items with the as Keyword: Crafting aliases for imported items.

  • Glob Operator * for All Public Items: Unleashing the power of all public items in a path at once.

  • Importing Trait Methods with _ : The mysterious underscore allowing the invocation of trait methods without binding them to a name.


Organizin' the Code Seas with Modules and use: A Sailor's Shanty 🎢

Modules be like sails in the wind, creatin' a sea shanty of code harmony. The use spell be the compass, makin' paths clear as the starry night. Imagine a code ship with modules like port_side and starboard_side, each contributin' to the melody.

// src/main.rs
mod port_side;
mod starboard_side;

fn main() {
    println!("Turn the ship left: {}", port_side::turn_left(45));
    println!("Turn the ship right: {}", starboard_side::turn_right(30));
}

// src/port_side.rs
pub fn turn_left(degrees: i32) -> i32 {
    // Code for turning left
    degrees
}

// src/starboard_side.rs
pub fn turn_right(degrees: i32) -> i32 {
    // Code for turning right
    degrees
}
Enter fullscreen mode Exit fullscreen mode

In this seafarin' symphony, the modules dance together, creatin' a code chantey as sweet as the sirens' song.


Conclusion: Charting the Rusty Seas on Day 22!Β πŸ—ΊοΈπŸ¦œ

Avast, brave code adventurers! On Day 22 of our #100DaysOfCode Rust saga, we navigated the mystical waters of modules and danced with the enchanting use keyword. From hoisting the pub flag to reveal hidden treasures to crafting shortcuts with the use spell, we've embarked on a code corsair journey.
As we sail forward, let the Rusty winds guide us through the intricate hierarchies of modules and the clever incantations of use and pub. Our Rustiverse expands, and with each code piece, we're becoming true masters of the Rusty seas. Onward, fellow sailors! #RustLang #CodeAdventures πŸš’βš“

Top comments (0)