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 Config;
use Deserialize;
// Load configuration
let config = load_sync.expect;
println!;
Security Features
Sensitive Data Protection
Sensitive fields are automatically protected:
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 validationcodegen: Code generation for different featuressecurity: Security utilities (path validation, encryption)defaults: Default value generationload: Configuration loading methodsschema: JSON Schema generationclap: 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.