Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_reflect/src/serde/ser/maps.rs
6600 views
1
use crate::{serde::TypedReflectSerializer, Map, TypeRegistry};
2
use serde::{ser::SerializeMap, Serialize};
3
4
use super::ReflectSerializerProcessor;
5
6
/// A serializer for [`Map`] values.
7
pub(super) struct MapSerializer<'a, P> {
8
pub map: &'a dyn Map,
9
pub registry: &'a TypeRegistry,
10
pub processor: Option<&'a P>,
11
}
12
13
impl<P: ReflectSerializerProcessor> Serialize for MapSerializer<'_, P> {
14
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
15
where
16
S: serde::Serializer,
17
{
18
let mut state = serializer.serialize_map(Some(self.map.len()))?;
19
for (key, value) in self.map.iter() {
20
state.serialize_entry(
21
&TypedReflectSerializer::new_internal(key, self.registry, self.processor),
22
&TypedReflectSerializer::new_internal(value, self.registry, self.processor),
23
)?;
24
}
25
state.end()
26
}
27
}
28
29