fn denormalize()

in avro/src/schema.rs [1275:1308]


    fn denormalize(&mut self, schemata: &Vec<Schema>) -> AvroResult<()> {
        match self {
            Schema::Ref { name } => {
                let replacement_schema = schemata
                    .iter()
                    .find(|s| s.name().map(|n| *n == *name).unwrap_or(false));
                if let Some(schema) = replacement_schema {
                    let mut denorm = schema.clone();
                    denorm.denormalize(schemata)?;
                    *self = denorm;
                } else {
                    return Err(Error::SchemaResolutionError(name.clone()));
                }
            }
            Schema::Record(record_schema) => {
                for field in &mut record_schema.fields {
                    field.schema.denormalize(schemata)?;
                }
            }
            Schema::Array(array_schema) => {
                array_schema.items.denormalize(schemata)?;
            }
            Schema::Map(map_schema) => {
                map_schema.types.denormalize(schemata)?;
            }
            Schema::Union(union_schema) => {
                for schema in &mut union_schema.schemas {
                    schema.denormalize(schemata)?;
                }
            }
            _ => (),
        }
        Ok(())
    }