Thanks to visit codestin.com
Credit goes to lib.rs

#precedence #default #config-provider #layered-provider

cruxi-config

Configuration management with layered providers

2 unstable releases

Uses new Rust 2024

0.2.0 Apr 27, 2026
0.1.0 Apr 9, 2026

#810 in Configuration


Used in cruxi-sops

MIT license

155KB
3K SLoC

Configuration management with layered providers.

This crate provides a flexible configuration system supporting multiple sources with layered precedence.


cruxi-config

Layered configuration providers with typed access helpers.

Purpose

cruxi-config standardizes config lookup via ConfigProvider, with built-in providers:

  • EnvProvider: environment variables (optional prefix)
  • MapProvider: in-memory values
  • LayeredProvider: precedence-ordered composition

Usage

Build a layered stack where earlier providers override later ones.

Example

use cruxi_config::{ConfigProvider, EnvProvider, LayeredProvider, MapProvider};

let mut defaults = MapProvider::new();
defaults.set("PORT", "8080");

let cfg = LayeredProvider::new()
    .add(EnvProvider::with_prefix("APP"))
    .add(defaults);

let port = cfg.get_or("PORT", "3000");
assert!(!port.is_empty());

Dependencies

~110–470KB
~11K SLoC