this post was submitted on 13 Aug 2023
24 points (92.9% liked)

Rust

6036 readers
13 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

[email protected]

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
 

I started off avoiding mod.rs because it's the old way and I prefer having the module name as the filename. However, if the module needs a folder for submodules anyway, then there's a reason to tuck it away as mod.rs, especially if not doing so leaves lots of duplicate names (a.rs, b.rs, c.rs, ..., a/, b/, c/).

But then I don't really like to have much else in mod.rs other than mod declarations and pub use. Maybe a utility fn or a not-unwieldly implementation of struct "Foo", the module's namesake.

all 9 comments
sorted by: hot top controversial new old
[–] [email protected] 12 points 1 year ago

I avoid using mod.rs because then I'll have a bazillion mod.rs files. It's what I hate about python modules. I would rather have a thingy.rs and then a thingy folder than many files named the same thing distinct only by their path.

[–] [email protected] 7 points 1 year ago

I use mod.rs because I prefer having all the module’s files in the same folder. But I don’t do that unless a module is multiple files.

[–] nous 5 points 1 year ago* (last edited 1 year ago) (1 children)

But then I don't really like to have much else in mod.rs other than mod declarations and pub use.

You can always inline the mod.rs contents in its parent module and have one fewer file overall. Not every module needs to be in its own file.

But generally when working in an IDE I don't like to see a bunch of mod.rs files in the tabs as it just makes it harder to jump to the right one.

[–] [email protected] 1 points 1 year ago

I did that at work and people had a heart attack lol. Which i thought was silly because the mod literally had no code in it besides module file declarations. /shrug

[–] dr_itor 5 points 1 year ago* (last edited 1 year ago)

I use mod.rs because I like having a module entirely contained in its own directory, rather than having part of it in the parent one. Obvious exception is when the module does not have submodules.

It also follows the same structure of crates, where mod.rs maps to lib.rs. It has the (minor) advantage that I can trivially extract a module into its own crate by copying the module's directory and renaming mod.rs to lib.rs, but more than anything I like the homogeneity.

But then I don’t really like to have much else in mod.rs other than mod declarations and pub use. Maybe a utility fn or a not-unwieldly implementation of struct “Foo”, the module’s namesake.

Same.

My mod.rs only contains a sequence of pub use self::...;.

[–] snaggen 4 points 1 year ago (1 children)

It varies, depending on if I have submodules or not. I see no reason to have a folder with a single mod.rs.

[–] [email protected] 4 points 1 year ago

For a moment in time, I rather disliked mod.rs files.

Then my editor got an update to show the folder name in tabs, when two files were named the same.

Now I am using mod.rs in my own code bases, because I want all related files in one place. ¯\_(ツ)_/¯

[–] [email protected] 4 points 1 year ago

I use mod.rs all over the place because it entirely encapsulates a module in a folder. But since the name of the file is fairly obtuse and doesn't say what it is, I usually only re-export other better named files that also exist in that folder.

I'm the case that I want a module with content, and then more further nested content that may use pub(super), I will use a module named file and a separate folder to hold it's children modules.