fn read_writer_schema()

in avro/src/reader.rs [211:236]


    fn read_writer_schema(&mut self, metadata: &HashMap<String, Value>) -> AvroResult<()> {
        let json: serde_json::Value = metadata
            .get("avro.schema")
            .and_then(|bytes| {
                if let Value::Bytes(ref bytes) = *bytes {
                    from_slice(bytes.as_ref()).ok()
                } else {
                    None
                }
            })
            .ok_or(Error::GetAvroSchemaFromMap)?;
        if !self.schemata.is_empty() {
            let rs = ResolvedSchema::try_from(self.schemata.clone())?;
            let names: Names = rs
                .get_names()
                .iter()
                .map(|(name, schema)| (name.clone(), (*schema).clone()))
                .collect();
            self.writer_schema = Schema::parse_with_names(&json, names)?;
            resolve_names_with_schemata(&self.schemata, &mut self.names_refs, &None)?;
        } else {
            self.writer_schema = Schema::parse(&json)?;
            resolve_names(&self.writer_schema, &mut self.names_refs, &None)?;
        }
        Ok(())
    }