pub fn new<CR: ConfigReader>(config_reader: CR) -> ValidationResult<Self> {
        let product_config_spec = config_reader.read()?;

        validation::validate_property_spec(
            &product_config_spec.config_spec,
            &product_config_spec.property_specs,
        )?;

        Ok(product_config_spec)
    }
/// Create a ProductConfig based on a config reader like e.g. JSON, YAML etc.
///
/// # Arguments
///
/// * `config_reader` - config_reader implementation
///
Create a ProductConfig based on a config reader like e.g. JSON, YAML etc.
Create a ProductConfig based on a config reader like e . g . JSON YAML etc .
pub fn new<CR: ConfigReader>(config_reader: CR) -> ValidationResult<Self> {
        let product_config_spec = config_reader.read()?;
        validation::validate_property_spec(
            &product_config_spec.config_spec,
            &product_config_spec.property_specs,
        )?;
        Ok(product_config_spec)
    }
pub fn new < CR : ConfigReader > ( config_reader : CR ) -> ValidationResult < Self > { let product_config_spec = config_reader . read ( ) ? ; validation :: validate_property_spec ( & product_config_spec . config_spec , & product_config_spec . property_specs , ) ? ; Ok ( product_config_spec ) }
Create a ProductConfig based on a config reader like e.g.
Create a ProductConfig based on a config reader like e . g .
config_reader
CR