in safetensors/src/tensor.rs [535:556]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut names = vec![""; self.index_map.len()];
for (name, &index) in &self.index_map {
names[index] = name;
}
let length = self.metadata.as_ref().map_or(0, HashMap::len);
let mut map = serializer.serialize_map(Some(self.tensors.len() + length))?;
if let Some(metadata) = &self.metadata {
map.serialize_entry("__metadata__", metadata)?;
}
for (name, info) in names.iter().zip(&self.tensors) {
map.serialize_entry(name, info)?;
}
map.end()
}