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óduloconnection.rsé um submódulo dentro dedb
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ódulodbdb/= 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;