🌟 We are Open Source! Check out our repository on GitHub

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.