confers-macros 0.4.1

Production-ready Rust configuration library with zero boilerplate
Documentation

Procedural macros for the confers configuration library.

This crate provides derive macros for zero-boilerplate configuration management with security-first design.

Features

  • Security-first: Path traversal protection, sensitive data handling
  • Multiple sources: Environment variables, files, defaults
  • Type-safe: Compile-time validation and strong typing
  • Flexible: Support for nested configs, migrations, and CLI args
  • High Performance: Optimized type resolution and code generation

Quick Start

use confers::Config;
use serde::Deserialize;

#[derive(Config, Deserialize, Debug)]
#[config(env_prefix = "APP_")]
struct AppConfig {
    #[config(default = "localhost")]
    host: String,

    #[config(default = 8080)]
    port: u16,

    #[config(sensitive = true)]
    api_key: Option<String>,
}

// Load configuration
let config = AppConfig::load_sync().expect("config should load");
println!("{:?}", config);

Security Features

Sensitive Data Protection

Sensitive fields are automatically protected:

#[derive(Config, Deserialize)]
struct Config {
    #[config(sensitive = true)]
    password: String,  // Automatically uses SecretString

    #[config(encrypt = "xchacha20")]
    secret_key: String,  // Encrypted at rest
}

Path Traversal Protection

File paths for secrets are validated to prevent directory traversal attacks:

// These are blocked:
// APP_KEY_FILE=../../../etc/passwd
// APP_KEY_FILE=/etc/passwd
// APP_KEY_FILE=%2e%2e/etc/passwd

Architecture

The crate is organized into several modules:

  • parse: Attribute parsing and validation
  • codegen: Code generation for different features
    • security: Security utilities (path validation, encryption)
    • defaults: Default value generation
    • load: Configuration loading methods
    • schema: JSON Schema generation
    • clap: CLI argument generation

Derive Macros

Config

Main derive macro for configuration loading.

ConfigSchema

Generate JSON Schema from configuration structs.

ConfigMigration

Support for configuration version migrations.

ConfigModules

Group configuration into logical modules.

ConfigClap

Generate CLI argument parsers using clap.