reinhardt-conf 0.3.2

Configuration management framework for Reinhardt - Django-inspired settings with encryption and secrets management
Documentation
use indexmap::IndexMap;
use serde::de::DeserializeOwned;
use serde_json::Value;

use super::builder::BuildError;
use super::profile::Profile;
use super::validation::ValidationResult;

/// Trait for composed settings structs generated by the `#[settings(...)]` macro.
///
/// Provides required field validation against merged configuration sources
/// and fragment-level validation delegation.
pub trait ComposedSettings: Sized + DeserializeOwned {
	/// Check that all required fields have values in the merged source.
	///
	/// The merged data is a flat `IndexMap<String, Value>` from `MergedSettings`.
	/// Field names are looked up as top-level keys (due to `#[serde(flatten)]`).
	/// Generated composed settings preserve legacy root-direct
	/// `BuildError::MissingRequiredField` diagnostics and validate nested nodes
	/// with full `SettingsPathBuf` paths.
	fn validate_requirements(merged: &IndexMap<String, Value>) -> Result<(), BuildError>;

	/// Run all fragment `validate()` methods.
	fn validate_fragments(&self, profile: &Profile) -> ValidationResult;
}