Rust Project Structure
A scalable and maintainable folder structure for Rust applications
File Structure
- src
- main.rs
- lib.rs
- api
- mod.rs
- handlers.rs
- middleware.rs
- routes.rs
- domain
- mod.rs
- user
- mod.rs
- model.rs
- repository.rs
- service.rs
- infrastructure
- mod.rs
- database.rs
- cache.rs
- config
- mod.rs
- settings.rs
- utils
- mod.rs
- error.rs
- validation.rs
- tests
- common
- integration_test.rs
- api_test.rs
- examples
- basic_usage.rs
- advanced_usage.rs
- benches
- benchmark.rs
- docs
- api.md
- architecture.md
- migrations
- 001_initial.sql
- Cargo.toml
- Cargo.lock
- build.rs
- Dockerfile
- .gitignore
- README.md
Directory Structure Explanation
src/api/
API layer containing HTTP handlers, middleware, and routing logic.
api/handlers.rs
HTTP request handlers that process incoming requests and return responses.
api/middleware.rs
Middleware functions for authentication, logging, and request processing.
src/domain/
Domain layer containing business logic organized by domain entities.
domain/user/
User domain module containing model, repository, and service logic.
src/infrastructure/
Infrastructure layer containing database, cache, and external service implementations.
infrastructure/database.rs
Database connection and repository implementations.
src/config/
Configuration management including settings and environment variables.
utils/error.rs
Custom error types and error handling utilities.
benches/
Benchmark tests for performance measurement using Criterion.rs.
migrations/
Database migration files for schema versioning and updates.
build.rs
Build script that runs before compilation for code generation or custom build steps.