Skip to main content

mod | Rust

  • mod | Rust

No Rust, o mod.rs funciona como o arquivo principal de um módulo, e normalmente representa uma pasta (um “namespace”).


Ideia do mod.rs (bem direto)

Ele serve pra você dizer:

📌 “Essa pasta é um módulo, e aqui eu declaro o que existe dentro dela e o que eu exporto.”

Exemplo:

src/db/
├── mod.rs
└── connection.rs

O Rust entende:

  • db é um módulo
  • connection.rs é um submódulo dentro de db

E no src/db/mod.rs você “liga” esses arquivos:

pub mod connection;

Como você usa isso no código?

Em main.rs:

mod db;

Agora você pode acessar:

db::connection::connect_db(...)

Por que isso é útil?

Porque você consegue organizar projetos grandes assim:

✅ separando por domínio ✅ separando responsabilidades ✅ mantendo imports limpos ✅ controlando o que fica público (pub) e privado


mod.rs é obrigatório?

Depende.

Hoje você tem duas formas válidas no Rust:


Forma clássica (com mod.rs) — muito usada

src/db/mod.rs
src/db/connection.rs

Forma moderna (sem mod.rs) — também muito usada

Você pode ter:

src/db.rs
src/db/connection.rs

Daí o src/db.rs vira o “módulo db” no lugar do mod.rs.

📌 Ou seja:

  • db.rs = módulo db
  • db/ = submódulos

Qual eu recomendo?

📌 Para APIs/CRUDs com várias pastas, eu recomendo:

✅ usar mod.rs por pasta

porque fica bem “padrão backend” e escalável.


Exemplo real de pasta com vários arquivos

src/users/
├── mod.rs
├── handler.rs
├── service.rs
├── repository.rs
└── model.rs

src/users/mod.rs:

pub mod handler;
pub mod service;
pub mod repository;
pub mod model;

E em main.rs:

mod users;