Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_reflect/src/serde/de/tuples.rs
9411 views
1
use crate::{
2
serde::de::tuple_utils::visit_tuple,
3
tuple::{DynamicTuple, TupleInfo},
4
TypeRegistration, TypeRegistry,
5
};
6
use core::{fmt, fmt::Formatter};
7
use serde::de::{SeqAccess, Visitor};
8
9
use super::ReflectDeserializerProcessor;
10
11
/// A [`Visitor`] for deserializing [`Tuple`] values.
12
///
13
/// [`Tuple`]: crate::tuple::Tuple
14
pub(super) struct TupleVisitor<'a, P> {
15
pub tuple_info: &'static TupleInfo,
16
pub registration: &'a TypeRegistration,
17
pub registry: &'a TypeRegistry,
18
pub processor: Option<&'a mut P>,
19
}
20
21
impl<'de, P: ReflectDeserializerProcessor> Visitor<'de> for TupleVisitor<'_, P> {
22
type Value = DynamicTuple;
23
24
fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
25
formatter.write_str("reflected tuple value")
26
}
27
28
fn visit_seq<V>(self, mut seq: V) -> Result<Self::Value, V::Error>
29
where
30
V: SeqAccess<'de>,
31
{
32
visit_tuple(
33
&mut seq,
34
self.tuple_info,
35
self.registration,
36
self.registry,
37
self.processor,
38
)
39
}
40
}
41
42