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
6600 views
1
use crate::{
2
serde::de::tuple_utils::visit_tuple, DynamicTuple, TupleInfo, TypeRegistration, TypeRegistry,
3
};
4
use core::{fmt, fmt::Formatter};
5
use serde::de::{SeqAccess, Visitor};
6
7
use super::ReflectDeserializerProcessor;
8
9
/// A [`Visitor`] for deserializing [`Tuple`] values.
10
///
11
/// [`Tuple`]: crate::Tuple
12
pub(super) struct TupleVisitor<'a, P> {
13
pub tuple_info: &'static TupleInfo,
14
pub registration: &'a TypeRegistration,
15
pub registry: &'a TypeRegistry,
16
pub processor: Option<&'a mut P>,
17
}
18
19
impl<'de, P: ReflectDeserializerProcessor> Visitor<'de> for TupleVisitor<'_, P> {
20
type Value = DynamicTuple;
21
22
fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
23
formatter.write_str("reflected tuple value")
24
}
25
26
fn visit_seq<V>(self, mut seq: V) -> Result<Self::Value, V::Error>
27
where
28
V: SeqAccess<'de>,
29
{
30
visit_tuple(
31
&mut seq,
32
self.tuple_info,
33
self.registration,
34
self.registry,
35
self.processor,
36
)
37
}
38
}
39
40