Coverage Report

Created: 2025-07-14 07:05

/rust/registry/src/index.crates.io-6f17d22bba15001f/serde-1.0.198/src/de/value.rs
Line
Count
Source (jump to first uncovered line)
1
//! Building blocks for deserializing basic values using the `IntoDeserializer`
2
//! trait.
3
//!
4
//! ```edition2021
5
//! use serde::de::{value, Deserialize, IntoDeserializer};
6
//! use serde_derive::Deserialize;
7
//! use std::str::FromStr;
8
//!
9
//! #[derive(Deserialize)]
10
//! enum Setting {
11
//!     On,
12
//!     Off,
13
//! }
14
//!
15
//! impl FromStr for Setting {
16
//!     type Err = value::Error;
17
//!
18
//!     fn from_str(s: &str) -> Result<Self, Self::Err> {
19
//!         Self::deserialize(s.into_deserializer())
20
//!     }
21
//! }
22
//! ```
23
24
use crate::lib::*;
25
26
use self::private::{First, Second};
27
use crate::de::{self, size_hint, Deserializer, Expected, IntoDeserializer, SeqAccess, Visitor};
28
use crate::ser;
29
30
////////////////////////////////////////////////////////////////////////////////
31
32
// For structs that contain a PhantomData. We do not want the trait
33
// bound `E: Clone` inferred by derive(Clone).
34
macro_rules! impl_copy_clone {
35
    ($ty:ident $(<$lifetime:tt>)*) => {
36
        impl<$($lifetime,)* E> Copy for $ty<$($lifetime,)* E> {}
37
38
        impl<$($lifetime,)* E> Clone for $ty<$($lifetime,)* E> {
39
0
            fn clone(&self) -> Self {
40
0
                *self
41
0
            }
Unexecuted instantiation: <serde::de::value::UnitDeserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::BoolDeserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::I8Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::I16Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::I32Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::I64Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::I128Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::IsizeDeserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::U8Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::U16Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::U64Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::U128Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::UsizeDeserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::F32Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::F64Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::CharDeserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::U32Deserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::StrDeserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::BorrowedStrDeserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::BytesDeserializer<_> as core::clone::Clone>::clone
Unexecuted instantiation: <serde::de::value::BorrowedBytesDeserializer<_> as core::clone::Clone>::clone
42
        }
43
    };
44
}
45
46
////////////////////////////////////////////////////////////////////////////////
47
48
/// A minimal representation of all possible errors that can occur using the
49
/// `IntoDeserializer` trait.
50
#[derive(Clone, PartialEq)]
51
pub struct Error {
52
    err: ErrorImpl,
53
}
54
55
#[cfg(any(feature = "std", feature = "alloc"))]
56
type ErrorImpl = Box<str>;
57
#[cfg(not(any(feature = "std", feature = "alloc")))]
58
type ErrorImpl = ();
59
60
impl de::Error for Error {
61
    #[cfg(any(feature = "std", feature = "alloc"))]
62
    #[cold]
63
0
    fn custom<T>(msg: T) -> Self
64
0
    where
65
0
        T: Display,
66
0
    {
67
0
        Error {
68
0
            err: msg.to_string().into_boxed_str(),
69
0
        }
70
0
    }
71
72
    #[cfg(not(any(feature = "std", feature = "alloc")))]
73
    #[cold]
74
    fn custom<T>(msg: T) -> Self
75
    where
76
        T: Display,
77
    {
78
        let _ = msg;
79
        Error { err: () }
80
    }
81
}
82
83
impl ser::Error for Error {
84
    #[cold]
85
0
    fn custom<T>(msg: T) -> Self
86
0
    where
87
0
        T: Display,
88
0
    {
89
0
        de::Error::custom(msg)
90
0
    }
91
}
92
93
impl Display for Error {
94
    #[cfg(any(feature = "std", feature = "alloc"))]
95
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
96
0
        formatter.write_str(&self.err)
97
0
    }
98
99
    #[cfg(not(any(feature = "std", feature = "alloc")))]
100
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
101
        formatter.write_str("Serde deserialization error")
102
    }
103
}
104
105
impl Debug for Error {
106
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
107
0
        let mut debug = formatter.debug_tuple("Error");
108
0
        #[cfg(any(feature = "std", feature = "alloc"))]
109
0
        debug.field(&self.err);
110
0
        debug.finish()
111
0
    }
112
}
113
114
#[cfg(feature = "std")]
115
#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
116
impl error::Error for Error {
117
0
    fn description(&self) -> &str {
118
0
        &self.err
119
0
    }
120
}
121
122
////////////////////////////////////////////////////////////////////////////////
123
124
impl<'de, E> IntoDeserializer<'de, E> for ()
125
where
126
    E: de::Error,
127
{
128
    type Deserializer = UnitDeserializer<E>;
129
130
0
    fn into_deserializer(self) -> UnitDeserializer<E> {
131
0
        UnitDeserializer::new()
132
0
    }
133
}
134
135
/// A deserializer holding a `()`.
136
pub struct UnitDeserializer<E> {
137
    marker: PhantomData<E>,
138
}
139
140
impl_copy_clone!(UnitDeserializer);
141
142
impl<E> UnitDeserializer<E> {
143
    #[allow(missing_docs)]
144
0
    pub fn new() -> Self {
145
0
        UnitDeserializer {
146
0
            marker: PhantomData,
147
0
        }
148
0
    }
149
}
150
151
impl<'de, E> de::Deserializer<'de> for UnitDeserializer<E>
152
where
153
    E: de::Error,
154
{
155
    type Error = E;
156
157
    forward_to_deserialize_any! {
158
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
159
        bytes byte_buf unit unit_struct newtype_struct seq tuple tuple_struct
160
        map struct enum identifier ignored_any
161
    }
162
163
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
164
0
    where
165
0
        V: de::Visitor<'de>,
166
0
    {
167
0
        visitor.visit_unit()
168
0
    }
169
170
0
    fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Self::Error>
171
0
    where
172
0
        V: de::Visitor<'de>,
173
0
    {
174
0
        visitor.visit_none()
175
0
    }
176
}
177
178
impl<E> Debug for UnitDeserializer<E> {
179
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
180
0
        formatter.debug_struct("UnitDeserializer").finish()
181
0
    }
182
}
183
184
////////////////////////////////////////////////////////////////////////////////
185
186
/// A deserializer that cannot be instantiated.
187
#[cfg(feature = "unstable")]
188
#[cfg_attr(doc_cfg, doc(cfg(feature = "unstable")))]
189
pub struct NeverDeserializer<E> {
190
    never: !,
191
    marker: PhantomData<E>,
192
}
193
194
#[cfg(feature = "unstable")]
195
#[cfg_attr(doc_cfg, doc(cfg(feature = "unstable")))]
196
impl<'de, E> IntoDeserializer<'de, E> for !
197
where
198
    E: de::Error,
199
{
200
    type Deserializer = NeverDeserializer<E>;
201
202
    fn into_deserializer(self) -> Self::Deserializer {
203
        self
204
    }
205
}
206
207
#[cfg(feature = "unstable")]
208
impl<'de, E> de::Deserializer<'de> for NeverDeserializer<E>
209
where
210
    E: de::Error,
211
{
212
    type Error = E;
213
214
    fn deserialize_any<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
215
    where
216
        V: de::Visitor<'de>,
217
    {
218
        self.never
219
    }
220
221
    forward_to_deserialize_any! {
222
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
223
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
224
        tuple_struct map struct enum identifier ignored_any
225
    }
226
}
227
228
////////////////////////////////////////////////////////////////////////////////
229
230
macro_rules! primitive_deserializer {
231
    ($ty:ty, $doc:tt, $name:ident, $method:ident $($cast:tt)*) => {
232
        #[doc = "A deserializer holding"]
233
        #[doc = $doc]
234
        pub struct $name<E> {
235
            value: $ty,
236
            marker: PhantomData<E>
237
        }
238
239
        impl_copy_clone!($name);
240
241
        impl<'de, E> IntoDeserializer<'de, E> for $ty
242
        where
243
            E: de::Error,
244
        {
245
            type Deserializer = $name<E>;
246
247
0
            fn into_deserializer(self) -> $name<E> {
248
0
                $name::new(self)
249
0
            }
Unexecuted instantiation: <bool as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <i8 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <i16 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <i32 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <i64 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <i128 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <isize as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <u8 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <u16 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <u64 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <u128 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <usize as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <f32 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <f64 as serde::de::IntoDeserializer<_>>::into_deserializer
Unexecuted instantiation: <char as serde::de::IntoDeserializer<_>>::into_deserializer
250
        }
251
252
        impl<E> $name<E> {
253
            #[allow(missing_docs)]
254
0
            pub fn new(value: $ty) -> Self {
255
0
                $name {
256
0
                    value,
257
0
                    marker: PhantomData,
258
0
                }
259
0
            }
Unexecuted instantiation: <serde::de::value::BoolDeserializer<_>>::new
Unexecuted instantiation: <serde::de::value::I8Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::I16Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::I32Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::I64Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::I128Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::IsizeDeserializer<_>>::new
Unexecuted instantiation: <serde::de::value::U8Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::U16Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::U64Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::U128Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::UsizeDeserializer<_>>::new
Unexecuted instantiation: <serde::de::value::F32Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::F64Deserializer<_>>::new
Unexecuted instantiation: <serde::de::value::CharDeserializer<_>>::new
260
        }
261
262
        impl<'de, E> de::Deserializer<'de> for $name<E>
263
        where
264
            E: de::Error,
265
        {
266
            type Error = E;
267
268
            forward_to_deserialize_any! {
269
                bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str
270
                string bytes byte_buf option unit unit_struct newtype_struct seq
271
                tuple tuple_struct map struct enum identifier ignored_any
272
            }
273
274
0
            fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
275
0
            where
276
0
                V: de::Visitor<'de>,
277
0
            {
278
0
                visitor.$method(self.value $($cast)*)
279
0
            }
Unexecuted instantiation: <serde::de::value::BoolDeserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::I8Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::I16Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::I32Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::I64Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::I128Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::IsizeDeserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::U8Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::U16Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::U64Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::U128Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::UsizeDeserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::F32Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::F64Deserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
Unexecuted instantiation: <serde::de::value::CharDeserializer<_> as serde::de::Deserializer>::deserialize_any::<_>
280
        }
281
282
        impl<E> Debug for $name<E> {
283
0
            fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
284
0
                formatter
285
0
                    .debug_struct(stringify!($name))
286
0
                    .field("value", &self.value)
287
0
                    .finish()
288
0
            }
Unexecuted instantiation: <serde::de::value::BoolDeserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::I8Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::I16Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::I32Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::I64Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::I128Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::IsizeDeserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::U8Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::U16Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::U64Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::U128Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::UsizeDeserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::F32Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::F64Deserializer<_> as core::fmt::Debug>::fmt
Unexecuted instantiation: <serde::de::value::CharDeserializer<_> as core::fmt::Debug>::fmt
289
        }
290
    }
291
}
292
293
primitive_deserializer!(bool, "a `bool`.", BoolDeserializer, visit_bool);
294
primitive_deserializer!(i8, "an `i8`.", I8Deserializer, visit_i8);
295
primitive_deserializer!(i16, "an `i16`.", I16Deserializer, visit_i16);
296
primitive_deserializer!(i32, "an `i32`.", I32Deserializer, visit_i32);
297
primitive_deserializer!(i64, "an `i64`.", I64Deserializer, visit_i64);
298
primitive_deserializer!(i128, "an `i128`.", I128Deserializer, visit_i128);
299
primitive_deserializer!(isize, "an `isize`.", IsizeDeserializer, visit_i64 as i64);
300
primitive_deserializer!(u8, "a `u8`.", U8Deserializer, visit_u8);
301
primitive_deserializer!(u16, "a `u16`.", U16Deserializer, visit_u16);
302
primitive_deserializer!(u64, "a `u64`.", U64Deserializer, visit_u64);
303
primitive_deserializer!(u128, "a `u128`.", U128Deserializer, visit_u128);
304
primitive_deserializer!(usize, "a `usize`.", UsizeDeserializer, visit_u64 as u64);
305
primitive_deserializer!(f32, "an `f32`.", F32Deserializer, visit_f32);
306
primitive_deserializer!(f64, "an `f64`.", F64Deserializer, visit_f64);
307
primitive_deserializer!(char, "a `char`.", CharDeserializer, visit_char);
308
309
/// A deserializer holding a `u32`.
310
pub struct U32Deserializer<E> {
311
    value: u32,
312
    marker: PhantomData<E>,
313
}
314
315
impl_copy_clone!(U32Deserializer);
316
317
impl<'de, E> IntoDeserializer<'de, E> for u32
318
where
319
    E: de::Error,
320
{
321
    type Deserializer = U32Deserializer<E>;
322
323
0
    fn into_deserializer(self) -> U32Deserializer<E> {
324
0
        U32Deserializer::new(self)
325
0
    }
326
}
327
328
impl<E> U32Deserializer<E> {
329
    #[allow(missing_docs)]
330
0
    pub fn new(value: u32) -> Self {
331
0
        U32Deserializer {
332
0
            value,
333
0
            marker: PhantomData,
334
0
        }
335
0
    }
336
}
337
338
impl<'de, E> de::Deserializer<'de> for U32Deserializer<E>
339
where
340
    E: de::Error,
341
{
342
    type Error = E;
343
344
    forward_to_deserialize_any! {
345
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
346
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
347
        tuple_struct map struct identifier ignored_any
348
    }
349
350
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
351
0
    where
352
0
        V: de::Visitor<'de>,
353
0
    {
354
0
        visitor.visit_u32(self.value)
355
0
    }
356
357
0
    fn deserialize_enum<V>(
358
0
        self,
359
0
        name: &str,
360
0
        variants: &'static [&'static str],
361
0
        visitor: V,
362
0
    ) -> Result<V::Value, Self::Error>
363
0
    where
364
0
        V: de::Visitor<'de>,
365
0
    {
366
0
        let _ = name;
367
0
        let _ = variants;
368
0
        visitor.visit_enum(self)
369
0
    }
370
}
371
372
impl<'de, E> de::EnumAccess<'de> for U32Deserializer<E>
373
where
374
    E: de::Error,
375
{
376
    type Error = E;
377
    type Variant = private::UnitOnly<E>;
378
379
0
    fn variant_seed<T>(self, seed: T) -> Result<(T::Value, Self::Variant), Self::Error>
380
0
    where
381
0
        T: de::DeserializeSeed<'de>,
382
0
    {
383
0
        seed.deserialize(self).map(private::unit_only)
384
0
    }
385
}
386
387
impl<E> Debug for U32Deserializer<E> {
388
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
389
0
        formatter
390
0
            .debug_struct("U32Deserializer")
391
0
            .field("value", &self.value)
392
0
            .finish()
393
0
    }
394
}
395
396
////////////////////////////////////////////////////////////////////////////////
397
398
/// A deserializer holding a `&str`.
399
pub struct StrDeserializer<'a, E> {
400
    value: &'a str,
401
    marker: PhantomData<E>,
402
}
403
404
impl_copy_clone!(StrDeserializer<'de>);
405
406
impl<'de, 'a, E> IntoDeserializer<'de, E> for &'a str
407
where
408
    E: de::Error,
409
{
410
    type Deserializer = StrDeserializer<'a, E>;
411
412
0
    fn into_deserializer(self) -> StrDeserializer<'a, E> {
413
0
        StrDeserializer::new(self)
414
0
    }
415
}
416
417
impl<'a, E> StrDeserializer<'a, E> {
418
    #[allow(missing_docs)]
419
0
    pub fn new(value: &'a str) -> Self {
420
0
        StrDeserializer {
421
0
            value,
422
0
            marker: PhantomData,
423
0
        }
424
0
    }
425
}
426
427
impl<'de, 'a, E> de::Deserializer<'de> for StrDeserializer<'a, E>
428
where
429
    E: de::Error,
430
{
431
    type Error = E;
432
433
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
434
0
    where
435
0
        V: de::Visitor<'de>,
436
0
    {
437
0
        visitor.visit_str(self.value)
438
0
    }
439
440
0
    fn deserialize_enum<V>(
441
0
        self,
442
0
        name: &str,
443
0
        variants: &'static [&'static str],
444
0
        visitor: V,
445
0
    ) -> Result<V::Value, Self::Error>
446
0
    where
447
0
        V: de::Visitor<'de>,
448
0
    {
449
0
        let _ = name;
450
0
        let _ = variants;
451
0
        visitor.visit_enum(self)
452
0
    }
453
454
    forward_to_deserialize_any! {
455
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
456
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
457
        tuple_struct map struct identifier ignored_any
458
    }
459
}
460
461
impl<'de, 'a, E> de::EnumAccess<'de> for StrDeserializer<'a, E>
462
where
463
    E: de::Error,
464
{
465
    type Error = E;
466
    type Variant = private::UnitOnly<E>;
467
468
0
    fn variant_seed<T>(self, seed: T) -> Result<(T::Value, Self::Variant), Self::Error>
469
0
    where
470
0
        T: de::DeserializeSeed<'de>,
471
0
    {
472
0
        seed.deserialize(self).map(private::unit_only)
473
0
    }
474
}
475
476
impl<'a, E> Debug for StrDeserializer<'a, E> {
477
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
478
0
        formatter
479
0
            .debug_struct("StrDeserializer")
480
0
            .field("value", &self.value)
481
0
            .finish()
482
0
    }
483
}
484
485
////////////////////////////////////////////////////////////////////////////////
486
487
/// A deserializer holding a `&str` with a lifetime tied to another
488
/// deserializer.
489
pub struct BorrowedStrDeserializer<'de, E> {
490
    value: &'de str,
491
    marker: PhantomData<E>,
492
}
493
494
impl_copy_clone!(BorrowedStrDeserializer<'de>);
495
496
impl<'de, E> BorrowedStrDeserializer<'de, E> {
497
    /// Create a new borrowed deserializer from the given string.
498
0
    pub fn new(value: &'de str) -> BorrowedStrDeserializer<'de, E> {
499
0
        BorrowedStrDeserializer {
500
0
            value,
501
0
            marker: PhantomData,
502
0
        }
503
0
    }
504
}
505
506
impl<'de, E> de::Deserializer<'de> for BorrowedStrDeserializer<'de, E>
507
where
508
    E: de::Error,
509
{
510
    type Error = E;
511
512
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
513
0
    where
514
0
        V: de::Visitor<'de>,
515
0
    {
516
0
        visitor.visit_borrowed_str(self.value)
517
0
    }
518
519
0
    fn deserialize_enum<V>(
520
0
        self,
521
0
        name: &str,
522
0
        variants: &'static [&'static str],
523
0
        visitor: V,
524
0
    ) -> Result<V::Value, Self::Error>
525
0
    where
526
0
        V: de::Visitor<'de>,
527
0
    {
528
0
        let _ = name;
529
0
        let _ = variants;
530
0
        visitor.visit_enum(self)
531
0
    }
532
533
    forward_to_deserialize_any! {
534
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
535
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
536
        tuple_struct map struct identifier ignored_any
537
    }
538
}
539
540
impl<'de, E> de::EnumAccess<'de> for BorrowedStrDeserializer<'de, E>
541
where
542
    E: de::Error,
543
{
544
    type Error = E;
545
    type Variant = private::UnitOnly<E>;
546
547
0
    fn variant_seed<T>(self, seed: T) -> Result<(T::Value, Self::Variant), Self::Error>
548
0
    where
549
0
        T: de::DeserializeSeed<'de>,
550
0
    {
551
0
        seed.deserialize(self).map(private::unit_only)
552
0
    }
553
}
554
555
impl<'de, E> Debug for BorrowedStrDeserializer<'de, E> {
556
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
557
0
        formatter
558
0
            .debug_struct("BorrowedStrDeserializer")
559
0
            .field("value", &self.value)
560
0
            .finish()
561
0
    }
562
}
563
564
////////////////////////////////////////////////////////////////////////////////
565
566
/// A deserializer holding a `String`.
567
#[cfg(any(feature = "std", feature = "alloc"))]
568
#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
569
pub struct StringDeserializer<E> {
570
    value: String,
571
    marker: PhantomData<E>,
572
}
573
574
#[cfg(any(feature = "std", feature = "alloc"))]
575
impl<E> Clone for StringDeserializer<E> {
576
0
    fn clone(&self) -> Self {
577
0
        StringDeserializer {
578
0
            value: self.value.clone(),
579
0
            marker: PhantomData,
580
0
        }
581
0
    }
582
}
583
584
#[cfg(any(feature = "std", feature = "alloc"))]
585
#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
586
impl<'de, E> IntoDeserializer<'de, E> for String
587
where
588
    E: de::Error,
589
{
590
    type Deserializer = StringDeserializer<E>;
591
592
0
    fn into_deserializer(self) -> StringDeserializer<E> {
593
0
        StringDeserializer::new(self)
594
0
    }
595
}
596
597
#[cfg(any(feature = "std", feature = "alloc"))]
598
impl<E> StringDeserializer<E> {
599
    #[allow(missing_docs)]
600
0
    pub fn new(value: String) -> Self {
601
0
        StringDeserializer {
602
0
            value,
603
0
            marker: PhantomData,
604
0
        }
605
0
    }
606
}
607
608
#[cfg(any(feature = "std", feature = "alloc"))]
609
impl<'de, E> de::Deserializer<'de> for StringDeserializer<E>
610
where
611
    E: de::Error,
612
{
613
    type Error = E;
614
615
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
616
0
    where
617
0
        V: de::Visitor<'de>,
618
0
    {
619
0
        visitor.visit_string(self.value)
620
0
    }
621
622
0
    fn deserialize_enum<V>(
623
0
        self,
624
0
        name: &str,
625
0
        variants: &'static [&'static str],
626
0
        visitor: V,
627
0
    ) -> Result<V::Value, Self::Error>
628
0
    where
629
0
        V: de::Visitor<'de>,
630
0
    {
631
0
        let _ = name;
632
0
        let _ = variants;
633
0
        visitor.visit_enum(self)
634
0
    }
635
636
    forward_to_deserialize_any! {
637
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
638
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
639
        tuple_struct map struct identifier ignored_any
640
    }
641
}
642
643
#[cfg(any(feature = "std", feature = "alloc"))]
644
impl<'de, E> de::EnumAccess<'de> for StringDeserializer<E>
645
where
646
    E: de::Error,
647
{
648
    type Error = E;
649
    type Variant = private::UnitOnly<E>;
650
651
0
    fn variant_seed<T>(self, seed: T) -> Result<(T::Value, Self::Variant), Self::Error>
652
0
    where
653
0
        T: de::DeserializeSeed<'de>,
654
0
    {
655
0
        seed.deserialize(self).map(private::unit_only)
656
0
    }
657
}
658
659
#[cfg(any(feature = "std", feature = "alloc"))]
660
impl<E> Debug for StringDeserializer<E> {
661
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
662
0
        formatter
663
0
            .debug_struct("StringDeserializer")
664
0
            .field("value", &self.value)
665
0
            .finish()
666
0
    }
667
}
668
669
////////////////////////////////////////////////////////////////////////////////
670
671
/// A deserializer holding a `Cow<str>`.
672
#[cfg(any(feature = "std", feature = "alloc"))]
673
#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
674
pub struct CowStrDeserializer<'a, E> {
675
    value: Cow<'a, str>,
676
    marker: PhantomData<E>,
677
}
678
679
#[cfg(any(feature = "std", feature = "alloc"))]
680
impl<'a, E> Clone for CowStrDeserializer<'a, E> {
681
0
    fn clone(&self) -> Self {
682
0
        CowStrDeserializer {
683
0
            value: self.value.clone(),
684
0
            marker: PhantomData,
685
0
        }
686
0
    }
687
}
688
689
#[cfg(any(feature = "std", feature = "alloc"))]
690
#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
691
impl<'de, 'a, E> IntoDeserializer<'de, E> for Cow<'a, str>
692
where
693
    E: de::Error,
694
{
695
    type Deserializer = CowStrDeserializer<'a, E>;
696
697
0
    fn into_deserializer(self) -> CowStrDeserializer<'a, E> {
698
0
        CowStrDeserializer::new(self)
699
0
    }
700
}
701
702
#[cfg(any(feature = "std", feature = "alloc"))]
703
impl<'a, E> CowStrDeserializer<'a, E> {
704
    #[allow(missing_docs)]
705
0
    pub fn new(value: Cow<'a, str>) -> Self {
706
0
        CowStrDeserializer {
707
0
            value,
708
0
            marker: PhantomData,
709
0
        }
710
0
    }
711
}
712
713
#[cfg(any(feature = "std", feature = "alloc"))]
714
impl<'de, 'a, E> de::Deserializer<'de> for CowStrDeserializer<'a, E>
715
where
716
    E: de::Error,
717
{
718
    type Error = E;
719
720
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
721
0
    where
722
0
        V: de::Visitor<'de>,
723
0
    {
724
0
        match self.value {
725
0
            Cow::Borrowed(string) => visitor.visit_str(string),
726
0
            Cow::Owned(string) => visitor.visit_string(string),
727
        }
728
0
    }
729
730
0
    fn deserialize_enum<V>(
731
0
        self,
732
0
        name: &str,
733
0
        variants: &'static [&'static str],
734
0
        visitor: V,
735
0
    ) -> Result<V::Value, Self::Error>
736
0
    where
737
0
        V: de::Visitor<'de>,
738
0
    {
739
0
        let _ = name;
740
0
        let _ = variants;
741
0
        visitor.visit_enum(self)
742
0
    }
743
744
    forward_to_deserialize_any! {
745
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
746
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
747
        tuple_struct map struct identifier ignored_any
748
    }
749
}
750
751
#[cfg(any(feature = "std", feature = "alloc"))]
752
impl<'de, 'a, E> de::EnumAccess<'de> for CowStrDeserializer<'a, E>
753
where
754
    E: de::Error,
755
{
756
    type Error = E;
757
    type Variant = private::UnitOnly<E>;
758
759
0
    fn variant_seed<T>(self, seed: T) -> Result<(T::Value, Self::Variant), Self::Error>
760
0
    where
761
0
        T: de::DeserializeSeed<'de>,
762
0
    {
763
0
        seed.deserialize(self).map(private::unit_only)
764
0
    }
765
}
766
767
#[cfg(any(feature = "std", feature = "alloc"))]
768
impl<'a, E> Debug for CowStrDeserializer<'a, E> {
769
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
770
0
        formatter
771
0
            .debug_struct("CowStrDeserializer")
772
0
            .field("value", &self.value)
773
0
            .finish()
774
0
    }
775
}
776
777
////////////////////////////////////////////////////////////////////////////////
778
779
/// A deserializer holding a `&[u8]`. Always calls [`Visitor::visit_bytes`].
780
pub struct BytesDeserializer<'a, E> {
781
    value: &'a [u8],
782
    marker: PhantomData<E>,
783
}
784
785
impl<'a, E> BytesDeserializer<'a, E> {
786
    /// Create a new deserializer from the given bytes.
787
0
    pub fn new(value: &'a [u8]) -> Self {
788
0
        BytesDeserializer {
789
0
            value,
790
0
            marker: PhantomData,
791
0
        }
792
0
    }
793
}
794
795
impl_copy_clone!(BytesDeserializer<'a>);
796
797
impl<'de, 'a, E> IntoDeserializer<'de, E> for &'a [u8]
798
where
799
    E: de::Error,
800
{
801
    type Deserializer = BytesDeserializer<'a, E>;
802
803
0
    fn into_deserializer(self) -> BytesDeserializer<'a, E> {
804
0
        BytesDeserializer::new(self)
805
0
    }
806
}
807
808
impl<'de, 'a, E> Deserializer<'de> for BytesDeserializer<'a, E>
809
where
810
    E: de::Error,
811
{
812
    type Error = E;
813
814
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
815
0
    where
816
0
        V: Visitor<'de>,
817
0
    {
818
0
        visitor.visit_bytes(self.value)
819
0
    }
820
821
    forward_to_deserialize_any! {
822
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
823
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
824
        tuple_struct map struct enum identifier ignored_any
825
    }
826
}
827
828
impl<'a, E> Debug for BytesDeserializer<'a, E> {
829
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
830
0
        formatter
831
0
            .debug_struct("BytesDeserializer")
832
0
            .field("value", &self.value)
833
0
            .finish()
834
0
    }
835
}
836
837
/// A deserializer holding a `&[u8]` with a lifetime tied to another
838
/// deserializer. Always calls [`Visitor::visit_borrowed_bytes`].
839
pub struct BorrowedBytesDeserializer<'de, E> {
840
    value: &'de [u8],
841
    marker: PhantomData<E>,
842
}
843
844
impl<'de, E> BorrowedBytesDeserializer<'de, E> {
845
    /// Create a new borrowed deserializer from the given borrowed bytes.
846
0
    pub fn new(value: &'de [u8]) -> Self {
847
0
        BorrowedBytesDeserializer {
848
0
            value,
849
0
            marker: PhantomData,
850
0
        }
851
0
    }
852
}
853
854
impl_copy_clone!(BorrowedBytesDeserializer<'de>);
855
856
impl<'de, E> Deserializer<'de> for BorrowedBytesDeserializer<'de, E>
857
where
858
    E: de::Error,
859
{
860
    type Error = E;
861
862
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
863
0
    where
864
0
        V: Visitor<'de>,
865
0
    {
866
0
        visitor.visit_borrowed_bytes(self.value)
867
0
    }
868
869
    forward_to_deserialize_any! {
870
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
871
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
872
        tuple_struct map struct enum identifier ignored_any
873
    }
874
}
875
876
impl<'de, E> Debug for BorrowedBytesDeserializer<'de, E> {
877
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
878
0
        formatter
879
0
            .debug_struct("BorrowedBytesDeserializer")
880
0
            .field("value", &self.value)
881
0
            .finish()
882
0
    }
883
}
884
885
////////////////////////////////////////////////////////////////////////////////
886
887
/// A deserializer that iterates over a sequence.
888
#[derive(Clone)]
889
pub struct SeqDeserializer<I, E> {
890
    iter: iter::Fuse<I>,
891
    count: usize,
892
    marker: PhantomData<E>,
893
}
894
895
impl<I, E> SeqDeserializer<I, E>
896
where
897
    I: Iterator,
898
{
899
    /// Construct a new `SeqDeserializer<I, E>`.
900
635k
    pub fn new(iter: I) -> Self {
901
635k
        SeqDeserializer {
902
635k
            iter: iter.fuse(),
903
635k
            count: 0,
904
635k
            marker: PhantomData,
905
635k
        }
906
635k
    }
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::SeqDeserializer<_, _>>::new
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error>>::new
Line
Count
Source
900
635k
    pub fn new(iter: I) -> Self {
901
635k
        SeqDeserializer {
902
635k
            iter: iter.fuse(),
903
635k
            count: 0,
904
635k
            marker: PhantomData,
905
635k
        }
906
635k
    }
907
}
908
909
impl<I, E> SeqDeserializer<I, E>
910
where
911
    I: Iterator,
912
    E: de::Error,
913
{
914
    /// Check for remaining elements after passing a `SeqDeserializer` to
915
    /// `Visitor::visit_seq`.
916
527k
    pub fn end(self) -> Result<(), E> {
917
527k
        let remaining = self.iter.count();
918
527k
        if remaining == 0 {
919
519k
            Ok(())
920
        } else {
921
            // First argument is the number of elements in the data, second
922
            // argument is the number of elements expected by the Deserialize.
923
7.31k
            Err(de::Error::invalid_length(
924
7.31k
                self.count + remaining,
925
7.31k
                &ExpectedInSeq(self.count),
926
7.31k
            ))
927
        }
928
527k
    }
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::SeqDeserializer<_, _>>::end
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error>>::end
Line
Count
Source
916
527k
    pub fn end(self) -> Result<(), E> {
917
527k
        let remaining = self.iter.count();
918
527k
        if remaining == 0 {
919
519k
            Ok(())
920
        } else {
921
            // First argument is the number of elements in the data, second
922
            // argument is the number of elements expected by the Deserialize.
923
7.31k
            Err(de::Error::invalid_length(
924
7.31k
                self.count + remaining,
925
7.31k
                &ExpectedInSeq(self.count),
926
7.31k
            ))
927
        }
928
527k
    }
929
}
930
931
impl<'de, I, T, E> de::Deserializer<'de> for SeqDeserializer<I, E>
932
where
933
    I: Iterator<Item = T>,
934
    T: IntoDeserializer<'de, E>,
935
    E: de::Error,
936
{
937
    type Error = E;
938
939
0
    fn deserialize_any<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
940
0
    where
941
0
        V: de::Visitor<'de>,
942
0
    {
943
0
        let v = tri!(visitor.visit_seq(&mut self));
944
0
        tri!(self.end());
945
0
        Ok(v)
946
0
    }
947
948
    forward_to_deserialize_any! {
949
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
950
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
951
        tuple_struct map struct enum identifier ignored_any
952
    }
953
}
954
955
impl<'de, I, T, E> de::SeqAccess<'de> for SeqDeserializer<I, E>
956
where
957
    I: Iterator<Item = T>,
958
    T: IntoDeserializer<'de, E>,
959
    E: de::Error,
960
{
961
    type Error = E;
962
963
2.61M
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
2.61M
    where
965
2.61M
        V: de::DeserializeSeed<'de>,
966
2.61M
    {
967
2.61M
        match self.iter.next() {
968
2.60M
            Some(value) => {
969
2.60M
                self.count += 1;
970
2.60M
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
8.25k
            None => Ok(None),
973
        }
974
2.61M
    }
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<core::option::Option<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<alloc::string::String>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::QeIdentity>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::TdInfo>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::Platform>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::Operation>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::Reference>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::TdxModule>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<u8>>
Unexecuted instantiation: <serde::de::value::SeqDeserializer<_, _> as serde::de::SeqAccess>::next_element_seed::<_>
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<core::option::Option<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>>
Line
Count
Source
963
2.96k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
2.96k
    where
965
2.96k
        V: de::DeserializeSeed<'de>,
966
2.96k
    {
967
2.96k
        match self.iter.next() {
968
2.87k
            Some(value) => {
969
2.87k
                self.count += 1;
970
2.87k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
91
            None => Ok(None),
973
        }
974
2.96k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Line
Count
Source
963
88.1k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
88.1k
    where
965
88.1k
        V: de::DeserializeSeed<'de>,
966
88.1k
    {
967
88.1k
        match self.iter.next() {
968
87.4k
            Some(value) => {
969
87.4k
                self.count += 1;
970
87.4k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
710
            None => Ok(None),
973
        }
974
88.1k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<alloc::string::String>>
Line
Count
Source
963
66.4k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
66.4k
    where
965
66.4k
        V: de::DeserializeSeed<'de>,
966
66.4k
    {
967
66.4k
        match self.iter.next() {
968
66.4k
            Some(value) => {
969
66.4k
                self.count += 1;
970
66.4k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
15
            None => Ok(None),
973
        }
974
66.4k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::QeIdentity>>
Line
Count
Source
963
65.0k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
65.0k
    where
965
65.0k
        V: de::DeserializeSeed<'de>,
966
65.0k
    {
967
65.0k
        match self.iter.next() {
968
65.0k
            Some(value) => {
969
65.0k
                self.count += 1;
970
65.0k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
15
            None => Ok(None),
973
        }
974
65.0k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::TdInfo>>
Line
Count
Source
963
6.85k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
6.85k
    where
965
6.85k
        V: de::DeserializeSeed<'de>,
966
6.85k
    {
967
6.85k
        match self.iter.next() {
968
6.84k
            Some(value) => {
969
6.84k
                self.count += 1;
970
6.84k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
15
            None => Ok(None),
973
        }
974
6.85k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::Platform>>
Line
Count
Source
963
1.58k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
1.58k
    where
965
1.58k
        V: de::DeserializeSeed<'de>,
966
1.58k
    {
967
1.58k
        match self.iter.next() {
968
1.54k
            Some(value) => {
969
1.54k
                self.count += 1;
970
1.54k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
35
            None => Ok(None),
973
        }
974
1.58k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::Operation>>
Line
Count
Source
963
393k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
393k
    where
965
393k
        V: de::DeserializeSeed<'de>,
966
393k
    {
967
393k
        match self.iter.next() {
968
393k
            Some(value) => {
969
393k
                self.count += 1;
970
393k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
480
            None => Ok(None),
973
        }
974
393k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::Reference>>
Line
Count
Source
963
388k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
388k
    where
965
388k
        V: de::DeserializeSeed<'de>,
966
388k
    {
967
388k
        match self.iter.next() {
968
388k
            Some(value) => {
969
388k
                self.count += 1;
970
388k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
450
            None => Ok(None),
973
        }
974
388k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<policy::config::TdxModule>>
Line
Count
Source
963
7.34k
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
7.34k
    where
965
7.34k
        V: de::DeserializeSeed<'de>,
966
7.34k
    {
967
7.34k
        match self.iter.next() {
968
7.32k
            Some(value) => {
969
7.32k
                self.count += 1;
970
7.32k
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
15
            None => Ok(None),
973
        }
974
7.34k
    }
<serde::de::value::SeqDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<serde::__private::de::content::Content>, <serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>>::new>, serde_json::error::Error> as serde::de::SeqAccess>::next_element_seed::<core::marker::PhantomData<u8>>
Line
Count
Source
963
1.59M
    fn next_element_seed<V>(&mut self, seed: V) -> Result<Option<V::Value>, Self::Error>
964
1.59M
    where
965
1.59M
        V: de::DeserializeSeed<'de>,
966
1.59M
    {
967
1.59M
        match self.iter.next() {
968
1.58M
            Some(value) => {
969
1.58M
                self.count += 1;
970
1.58M
                seed.deserialize(value.into_deserializer()).map(Some)
971
            }
972
6.42k
            None => Ok(None),
973
        }
974
1.59M
    }
975
976
0
    fn size_hint(&self) -> Option<usize> {
977
0
        size_hint::from_bounds(&self.iter)
978
0
    }
979
}
980
981
struct ExpectedInSeq(usize);
982
983
impl Expected for ExpectedInSeq {
984
7.31k
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
985
7.31k
        if self.0 == 1 {
986
5.56k
            formatter.write_str("1 element in sequence")
987
        } else {
988
1.74k
            write!(formatter, "{} elements in sequence", self.0)
989
        }
990
7.31k
    }
991
}
992
993
impl<I, E> Debug for SeqDeserializer<I, E>
994
where
995
    I: Debug,
996
{
997
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
998
0
        formatter
999
0
            .debug_struct("SeqDeserializer")
1000
0
            .field("iter", &self.iter)
1001
0
            .field("count", &self.count)
1002
0
            .finish()
1003
0
    }
1004
}
1005
1006
////////////////////////////////////////////////////////////////////////////////
1007
1008
#[cfg(any(feature = "std", feature = "alloc"))]
1009
#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
1010
impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>
1011
where
1012
    T: IntoDeserializer<'de, E>,
1013
    E: de::Error,
1014
{
1015
    type Deserializer = SeqDeserializer<<Self as IntoIterator>::IntoIter, E>;
1016
1017
0
    fn into_deserializer(self) -> Self::Deserializer {
1018
0
        SeqDeserializer::new(self.into_iter())
1019
0
    }
1020
}
1021
1022
#[cfg(any(feature = "std", feature = "alloc"))]
1023
#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
1024
impl<'de, T, E> IntoDeserializer<'de, E> for BTreeSet<T>
1025
where
1026
    T: IntoDeserializer<'de, E> + Eq + Ord,
1027
    E: de::Error,
1028
{
1029
    type Deserializer = SeqDeserializer<<Self as IntoIterator>::IntoIter, E>;
1030
1031
0
    fn into_deserializer(self) -> Self::Deserializer {
1032
0
        SeqDeserializer::new(self.into_iter())
1033
0
    }
1034
}
1035
1036
#[cfg(feature = "std")]
1037
#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
1038
impl<'de, T, S, E> IntoDeserializer<'de, E> for HashSet<T, S>
1039
where
1040
    T: IntoDeserializer<'de, E> + Eq + Hash,
1041
    S: BuildHasher,
1042
    E: de::Error,
1043
{
1044
    type Deserializer = SeqDeserializer<<Self as IntoIterator>::IntoIter, E>;
1045
1046
0
    fn into_deserializer(self) -> Self::Deserializer {
1047
0
        SeqDeserializer::new(self.into_iter())
1048
0
    }
1049
}
1050
1051
////////////////////////////////////////////////////////////////////////////////
1052
1053
/// A deserializer holding a `SeqAccess`.
1054
#[derive(Clone, Debug)]
1055
pub struct SeqAccessDeserializer<A> {
1056
    seq: A,
1057
}
1058
1059
impl<A> SeqAccessDeserializer<A> {
1060
    /// Construct a new `SeqAccessDeserializer<A>`.
1061
0
    pub fn new(seq: A) -> Self {
1062
0
        SeqAccessDeserializer { seq }
1063
0
    }
1064
}
1065
1066
impl<'de, A> de::Deserializer<'de> for SeqAccessDeserializer<A>
1067
where
1068
    A: de::SeqAccess<'de>,
1069
{
1070
    type Error = A::Error;
1071
1072
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1073
0
    where
1074
0
        V: de::Visitor<'de>,
1075
0
    {
1076
0
        visitor.visit_seq(self.seq)
1077
0
    }
1078
1079
    forward_to_deserialize_any! {
1080
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
1081
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
1082
        tuple_struct map struct enum identifier ignored_any
1083
    }
1084
}
1085
1086
////////////////////////////////////////////////////////////////////////////////
1087
1088
/// A deserializer that iterates over a map.
1089
pub struct MapDeserializer<'de, I, E>
1090
where
1091
    I: Iterator,
1092
    I::Item: private::Pair,
1093
{
1094
    iter: iter::Fuse<I>,
1095
    value: Option<Second<I::Item>>,
1096
    count: usize,
1097
    lifetime: PhantomData<&'de ()>,
1098
    error: PhantomData<E>,
1099
}
1100
1101
impl<'de, I, E> MapDeserializer<'de, I, E>
1102
where
1103
    I: Iterator,
1104
    I::Item: private::Pair,
1105
{
1106
    /// Construct a new `MapDeserializer<I, E>`.
1107
309k
    pub fn new(iter: I) -> Self {
1108
309k
        MapDeserializer {
1109
309k
            iter: iter.fuse(),
1110
309k
            value: None,
1111
309k
            count: 0,
1112
309k
            lifetime: PhantomData,
1113
309k
            error: PhantomData,
1114
309k
        }
1115
309k
    }
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, policy::config::Property>, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Reference as serde::de::Deserialize>::deserialize::ReferenceVisitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Unexecuted instantiation: <serde::de::value::MapDeserializer<_, _>>::new
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, policy::config::Property>, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
125k
    pub fn new(iter: I) -> Self {
1108
125k
        MapDeserializer {
1109
125k
            iter: iter.fuse(),
1110
125k
            value: None,
1111
125k
            count: 0,
1112
125k
            lifetime: PhantomData,
1113
125k
            error: PhantomData,
1114
125k
        }
1115
125k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
33.4k
    pub fn new(iter: I) -> Self {
1108
33.4k
        MapDeserializer {
1109
33.4k
            iter: iter.fuse(),
1110
33.4k
            value: None,
1111
33.4k
            count: 0,
1112
33.4k
            lifetime: PhantomData,
1113
33.4k
            error: PhantomData,
1114
33.4k
        }
1115
33.4k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
1.58k
    pub fn new(iter: I) -> Self {
1108
1.58k
        MapDeserializer {
1109
1.58k
            iter: iter.fuse(),
1110
1.58k
            value: None,
1111
1.58k
            count: 0,
1112
1.58k
            lifetime: PhantomData,
1113
1.58k
            error: PhantomData,
1114
1.58k
        }
1115
1.58k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
33.2k
    pub fn new(iter: I) -> Self {
1108
33.2k
        MapDeserializer {
1109
33.2k
            iter: iter.fuse(),
1110
33.2k
            value: None,
1111
33.2k
            count: 0,
1112
33.2k
            lifetime: PhantomData,
1113
33.2k
            error: PhantomData,
1114
33.2k
        }
1115
33.2k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
4.62k
    pub fn new(iter: I) -> Self {
1108
4.62k
        MapDeserializer {
1109
4.62k
            iter: iter.fuse(),
1110
4.62k
            value: None,
1111
4.62k
            count: 0,
1112
4.62k
            lifetime: PhantomData,
1113
4.62k
            error: PhantomData,
1114
4.62k
        }
1115
4.62k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
32.3k
    pub fn new(iter: I) -> Self {
1108
32.3k
        MapDeserializer {
1109
32.3k
            iter: iter.fuse(),
1110
32.3k
            value: None,
1111
32.3k
            count: 0,
1112
32.3k
            lifetime: PhantomData,
1113
32.3k
            error: PhantomData,
1114
32.3k
        }
1115
32.3k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
3.88k
    pub fn new(iter: I) -> Self {
1108
3.88k
        MapDeserializer {
1109
3.88k
            iter: iter.fuse(),
1110
3.88k
            value: None,
1111
3.88k
            count: 0,
1112
3.88k
            lifetime: PhantomData,
1113
3.88k
            error: PhantomData,
1114
3.88k
        }
1115
3.88k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
31.6k
    pub fn new(iter: I) -> Self {
1108
31.6k
        MapDeserializer {
1109
31.6k
            iter: iter.fuse(),
1110
31.6k
            value: None,
1111
31.6k
            count: 0,
1112
31.6k
            lifetime: PhantomData,
1113
31.6k
            error: PhantomData,
1114
31.6k
        }
1115
31.6k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
33.6k
    pub fn new(iter: I) -> Self {
1108
33.6k
        MapDeserializer {
1109
33.6k
            iter: iter.fuse(),
1110
33.6k
            value: None,
1111
33.6k
            count: 0,
1112
33.6k
            lifetime: PhantomData,
1113
33.6k
            error: PhantomData,
1114
33.6k
        }
1115
33.6k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
9.08k
    pub fn new(iter: I) -> Self {
1108
9.08k
        MapDeserializer {
1109
9.08k
            iter: iter.fuse(),
1110
9.08k
            value: None,
1111
9.08k
            count: 0,
1112
9.08k
            lifetime: PhantomData,
1113
9.08k
            error: PhantomData,
1114
9.08k
        }
1115
9.08k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Reference as serde::de::Deserialize>::deserialize::ReferenceVisitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::new
Line
Count
Source
1107
201
    pub fn new(iter: I) -> Self {
1108
201
        MapDeserializer {
1109
201
            iter: iter.fuse(),
1110
201
            value: None,
1111
201
            count: 0,
1112
201
            lifetime: PhantomData,
1113
201
            error: PhantomData,
1114
201
        }
1115
201
    }
1116
}
1117
1118
impl<'de, I, E> MapDeserializer<'de, I, E>
1119
where
1120
    I: Iterator,
1121
    I::Item: private::Pair,
1122
    E: de::Error,
1123
{
1124
    /// Check for remaining elements after passing a `MapDeserializer` to
1125
    /// `Visitor::visit_map`.
1126
175k
    pub fn end(self) -> Result<(), E> {
1127
175k
        let remaining = self.iter.count();
1128
175k
        if remaining == 0 {
1129
175k
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
175k
    }
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, policy::config::Property>, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Reference as serde::de::Deserialize>::deserialize::ReferenceVisitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Unexecuted instantiation: <serde::de::value::MapDeserializer<_, _>>::end
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, policy::config::Property>, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
107k
    pub fn end(self) -> Result<(), E> {
1127
107k
        let remaining = self.iter.count();
1128
107k
        if remaining == 0 {
1129
107k
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
107k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
219
    pub fn end(self) -> Result<(), E> {
1127
219
        let remaining = self.iter.count();
1128
219
        if remaining == 0 {
1129
219
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
219
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
733
    pub fn end(self) -> Result<(), E> {
1127
733
        let remaining = self.iter.count();
1128
733
        if remaining == 0 {
1129
733
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
733
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
906
    pub fn end(self) -> Result<(), E> {
1127
906
        let remaining = self.iter.count();
1128
906
        if remaining == 0 {
1129
906
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
906
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
933
    pub fn end(self) -> Result<(), E> {
1127
933
        let remaining = self.iter.count();
1128
933
        if remaining == 0 {
1129
933
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
933
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
715
    pub fn end(self) -> Result<(), E> {
1127
715
        let remaining = self.iter.count();
1128
715
        if remaining == 0 {
1129
715
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
715
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
537
    pub fn end(self) -> Result<(), E> {
1127
537
        let remaining = self.iter.count();
1128
537
        if remaining == 0 {
1129
537
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
537
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
30.7k
    pub fn end(self) -> Result<(), E> {
1127
30.7k
        let remaining = self.iter.count();
1128
30.7k
        if remaining == 0 {
1129
30.7k
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
30.7k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
33.2k
    pub fn end(self) -> Result<(), E> {
1127
33.2k
        let remaining = self.iter.count();
1128
33.2k
        if remaining == 0 {
1129
33.2k
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
33.2k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
Line
Count
Source
1126
195
    pub fn end(self) -> Result<(), E> {
1127
195
        let remaining = self.iter.count();
1128
195
        if remaining == 0 {
1129
195
            Ok(())
1130
        } else {
1131
            // First argument is the number of elements in the data, second
1132
            // argument is the number of elements expected by the Deserialize.
1133
0
            Err(de::Error::invalid_length(
1134
0
                self.count + remaining,
1135
0
                &ExpectedInMap(self.count),
1136
0
            ))
1137
        }
1138
195
    }
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Reference as serde::de::Deserialize>::deserialize::ReferenceVisitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::end
1139
}
1140
1141
impl<'de, I, E> MapDeserializer<'de, I, E>
1142
where
1143
    I: Iterator,
1144
    I::Item: private::Pair,
1145
{
1146
1.82M
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
1.82M
        match self.iter.next() {
1148
1.57M
            Some(kv) => {
1149
1.57M
                self.count += 1;
1150
1.57M
                Some(private::Pair::split(kv))
1151
            }
1152
252k
            None => None,
1153
        }
1154
1.82M
    }
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, policy::config::Property>, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Unexecuted instantiation: <serde::de::value::MapDeserializer<_, _>>::next_pair
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, policy::config::Property>, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
511k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
511k
        match self.iter.next() {
1148
403k
            Some(kv) => {
1149
403k
                self.count += 1;
1150
403k
                Some(private::Pair::split(kv))
1151
            }
1152
107k
            None => None,
1153
        }
1154
511k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
134k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
134k
        match self.iter.next() {
1148
108k
            Some(kv) => {
1149
108k
                self.count += 1;
1150
108k
                Some(private::Pair::split(kv))
1151
            }
1152
26.3k
            None => None,
1153
        }
1154
134k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
5.14k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
5.14k
        match self.iter.next() {
1148
3.75k
            Some(kv) => {
1149
3.75k
                self.count += 1;
1150
3.75k
                Some(private::Pair::split(kv))
1151
            }
1152
1.38k
            None => None,
1153
        }
1154
5.14k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
126k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
126k
        match self.iter.next() {
1148
105k
            Some(kv) => {
1149
105k
                self.count += 1;
1150
105k
                Some(private::Pair::split(kv))
1151
            }
1152
21.4k
            None => None,
1153
        }
1154
126k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
238k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
238k
        match self.iter.next() {
1148
234k
            Some(kv) => {
1149
234k
                self.count += 1;
1150
234k
                Some(private::Pair::split(kv))
1151
            }
1152
3.78k
            None => None,
1153
        }
1154
238k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
114k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
114k
        match self.iter.next() {
1148
95.5k
            Some(kv) => {
1149
95.5k
                self.count += 1;
1150
95.5k
                Some(private::Pair::split(kv))
1151
            }
1152
18.6k
            None => None,
1153
        }
1154
114k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
235k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
235k
        match self.iter.next() {
1148
231k
            Some(kv) => {
1149
231k
                self.count += 1;
1150
231k
                Some(private::Pair::split(kv))
1151
            }
1152
3.27k
            None => None,
1153
        }
1154
235k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
144k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
144k
        match self.iter.next() {
1148
112k
            Some(kv) => {
1149
112k
                self.count += 1;
1150
112k
                Some(private::Pair::split(kv))
1151
            }
1152
31.4k
            None => None,
1153
        }
1154
144k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
297k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
297k
        match self.iter.next() {
1148
263k
            Some(kv) => {
1149
263k
                self.count += 1;
1150
263k
                Some(private::Pair::split(kv))
1151
            }
1152
33.6k
            None => None,
1153
        }
1154
297k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error>>::next_pair
Line
Count
Source
1146
18.6k
    fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
1147
18.6k
        match self.iter.next() {
1148
14.2k
            Some(kv) => {
1149
14.2k
                self.count += 1;
1150
14.2k
                Some(private::Pair::split(kv))
1151
            }
1152
4.38k
            None => None,
1153
        }
1154
18.6k
    }
1155
}
1156
1157
impl<'de, I, E> de::Deserializer<'de> for MapDeserializer<'de, I, E>
1158
where
1159
    I: Iterator,
1160
    I::Item: private::Pair,
1161
    First<I::Item>: IntoDeserializer<'de, E>,
1162
    Second<I::Item>: IntoDeserializer<'de, E>,
1163
    E: de::Error,
1164
{
1165
    type Error = E;
1166
1167
0
    fn deserialize_any<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
1168
0
    where
1169
0
        V: de::Visitor<'de>,
1170
0
    {
1171
0
        let value = tri!(visitor.visit_map(&mut self));
1172
0
        tri!(self.end());
1173
0
        Ok(value)
1174
0
    }
1175
1176
0
    fn deserialize_seq<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
1177
0
    where
1178
0
        V: de::Visitor<'de>,
1179
0
    {
1180
0
        let value = tri!(visitor.visit_seq(&mut self));
1181
0
        tri!(self.end());
1182
0
        Ok(value)
1183
0
    }
1184
1185
0
    fn deserialize_tuple<V>(self, len: usize, visitor: V) -> Result<V::Value, Self::Error>
1186
0
    where
1187
0
        V: de::Visitor<'de>,
1188
0
    {
1189
0
        let _ = len;
1190
0
        self.deserialize_seq(visitor)
1191
0
    }
1192
1193
    forward_to_deserialize_any! {
1194
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
1195
        bytes byte_buf option unit unit_struct newtype_struct tuple_struct map
1196
        struct enum identifier ignored_any
1197
    }
1198
}
1199
1200
impl<'de, I, E> de::MapAccess<'de> for MapDeserializer<'de, I, E>
1201
where
1202
    I: Iterator,
1203
    I::Item: private::Pair,
1204
    First<I::Item>: IntoDeserializer<'de, E>,
1205
    Second<I::Item>: IntoDeserializer<'de, E>,
1206
    E: de::Error,
1207
{
1208
    type Error = E;
1209
1210
1.31M
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
1.31M
    where
1212
1.31M
        T: de::DeserializeSeed<'de>,
1213
1.31M
    {
1214
1.31M
        match self.next_pair() {
1215
1.17M
            Some((key, value)) => {
1216
1.17M
                self.value = Some(value);
1217
1.17M
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
144k
            None => Ok(None),
1220
        }
1221
1.31M
    }
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::Property as serde::de::Deserialize>::deserialize::__Field>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<_, _> as serde::de::MapAccess>::next_key_seed::<_>
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
134k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
134k
    where
1212
134k
        T: de::DeserializeSeed<'de>,
1213
134k
    {
1214
134k
        match self.next_pair() {
1215
108k
            Some((key, value)) => {
1216
108k
                self.value = Some(value);
1217
108k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
26.3k
            None => Ok(None),
1220
        }
1221
134k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
5.14k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
5.14k
    where
1212
5.14k
        T: de::DeserializeSeed<'de>,
1213
5.14k
    {
1214
5.14k
        match self.next_pair() {
1215
3.75k
            Some((key, value)) => {
1216
3.75k
                self.value = Some(value);
1217
3.75k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
1.38k
            None => Ok(None),
1220
        }
1221
5.14k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
126k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
126k
    where
1212
126k
        T: de::DeserializeSeed<'de>,
1213
126k
    {
1214
126k
        match self.next_pair() {
1215
105k
            Some((key, value)) => {
1216
105k
                self.value = Some(value);
1217
105k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
21.4k
            None => Ok(None),
1220
        }
1221
126k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
238k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
238k
    where
1212
238k
        T: de::DeserializeSeed<'de>,
1213
238k
    {
1214
238k
        match self.next_pair() {
1215
234k
            Some((key, value)) => {
1216
234k
                self.value = Some(value);
1217
234k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
3.78k
            None => Ok(None),
1220
        }
1221
238k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
114k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
114k
    where
1212
114k
        T: de::DeserializeSeed<'de>,
1213
114k
    {
1214
114k
        match self.next_pair() {
1215
95.5k
            Some((key, value)) => {
1216
95.5k
                self.value = Some(value);
1217
95.5k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
18.6k
            None => Ok(None),
1220
        }
1221
114k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
235k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
235k
    where
1212
235k
        T: de::DeserializeSeed<'de>,
1213
235k
    {
1214
235k
        match self.next_pair() {
1215
231k
            Some((key, value)) => {
1216
231k
                self.value = Some(value);
1217
231k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
3.27k
            None => Ok(None),
1220
        }
1221
235k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
144k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
144k
    where
1212
144k
        T: de::DeserializeSeed<'de>,
1213
144k
    {
1214
144k
        match self.next_pair() {
1215
112k
            Some((key, value)) => {
1216
112k
                self.value = Some(value);
1217
112k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
31.4k
            None => Ok(None),
1220
        }
1221
144k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
297k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
297k
    where
1212
297k
        T: de::DeserializeSeed<'de>,
1213
297k
    {
1214
297k
        match self.next_pair() {
1215
263k
            Some((key, value)) => {
1216
263k
                self.value = Some(value);
1217
263k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
33.6k
            None => Ok(None),
1220
        }
1221
297k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_key_seed::<core::marker::PhantomData<<policy::config::Property as serde::de::Deserialize>::deserialize::__Field>>
Line
Count
Source
1210
18.6k
    fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1211
18.6k
    where
1212
18.6k
        T: de::DeserializeSeed<'de>,
1213
18.6k
    {
1214
18.6k
        match self.next_pair() {
1215
14.2k
            Some((key, value)) => {
1216
14.2k
                self.value = Some(value);
1217
14.2k
                seed.deserialize(key.into_deserializer()).map(Some)
1218
            }
1219
4.38k
            None => Ok(None),
1220
        }
1221
18.6k
    }
1222
1223
1.16M
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
1.16M
    where
1225
1.16M
        T: de::DeserializeSeed<'de>,
1226
1.16M
    {
1227
1.16M
        let value = self.value.take();
1228
1.16M
        // Panic because this indicates a bug in the program rather than an
1229
1.16M
        // expected failure.
1230
1.16M
        let value = value.expect("MapAccess::next_value called before next_key");
1231
1.16M
        seed.deserialize(value.into_deserializer())
1232
1.16M
    }
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::Platform>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::string::String>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::QeIdentity>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::TdxModule>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::TdInfo>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<core::option::Option<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::Operation>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::Reference>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<_, _> as serde::de::MapAccess>::next_value_seed::<_>
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::Platform>>
Line
Count
Source
1223
5.37k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
5.37k
    where
1225
5.37k
        T: de::DeserializeSeed<'de>,
1226
5.37k
    {
1227
5.37k
        let value = self.value.take();
1228
5.37k
        // Panic because this indicates a bug in the program rather than an
1229
5.37k
        // expected failure.
1230
5.37k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
5.37k
        seed.deserialize(value.into_deserializer())
1232
5.37k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
99.3k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
99.3k
    where
1225
99.3k
        T: de::DeserializeSeed<'de>,
1226
99.3k
    {
1227
99.3k
        let value = self.value.take();
1228
99.3k
        // Panic because this indicates a bug in the program rather than an
1229
99.3k
        // expected failure.
1230
99.3k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
99.3k
        seed.deserialize(value.into_deserializer())
1232
99.3k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::PlatformInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::string::String>>
Line
Count
Source
1223
2.99k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
2.99k
    where
1225
2.99k
        T: de::DeserializeSeed<'de>,
1226
2.99k
    {
1227
2.99k
        let value = self.value.take();
1228
2.99k
        // Panic because this indicates a bug in the program rather than an
1229
2.99k
        // expected failure.
1230
2.99k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
2.99k
        seed.deserialize(value.into_deserializer())
1232
2.99k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Line
Count
Source
1223
928
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
928
    where
1225
928
        T: de::DeserializeSeed<'de>,
1226
928
    {
1227
928
        let value = self.value.take();
1228
928
        // Panic because this indicates a bug in the program rather than an
1229
928
        // expected failure.
1230
928
        let value = value.expect("MapAccess::next_value called before next_key");
1231
928
        seed.deserialize(value.into_deserializer())
1232
928
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Platform as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
2.82k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
2.82k
    where
1225
2.82k
        T: de::DeserializeSeed<'de>,
1226
2.82k
    {
1227
2.82k
        let value = self.value.take();
1228
2.82k
        // Panic because this indicates a bug in the program rather than an
1229
2.82k
        // expected failure.
1230
2.82k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
2.82k
        seed.deserialize(value.into_deserializer())
1232
2.82k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::QeIdentity>>
Line
Count
Source
1223
12.6k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
12.6k
    where
1225
12.6k
        T: de::DeserializeSeed<'de>,
1226
12.6k
    {
1227
12.6k
        let value = self.value.take();
1228
12.6k
        // Panic because this indicates a bug in the program rather than an
1229
12.6k
        // expected failure.
1230
12.6k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
12.6k
        seed.deserialize(value.into_deserializer())
1232
12.6k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
92.2k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
92.2k
    where
1225
92.2k
        T: de::DeserializeSeed<'de>,
1226
92.2k
    {
1227
92.2k
        let value = self.value.take();
1228
92.2k
        // Panic because this indicates a bug in the program rather than an
1229
92.2k
        // expected failure.
1230
92.2k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
92.2k
        seed.deserialize(value.into_deserializer())
1232
92.2k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Line
Count
Source
1223
1.77k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
1.77k
    where
1225
1.77k
        T: de::DeserializeSeed<'de>,
1226
1.77k
    {
1227
1.77k
        let value = self.value.take();
1228
1.77k
        // Panic because this indicates a bug in the program rather than an
1229
1.77k
        // expected failure.
1230
1.77k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
1.77k
        seed.deserialize(value.into_deserializer())
1232
1.77k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::QeIdentity as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
232k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
232k
    where
1225
232k
        T: de::DeserializeSeed<'de>,
1226
232k
    {
1227
232k
        let value = self.value.take();
1228
232k
        // Panic because this indicates a bug in the program rather than an
1229
232k
        // expected failure.
1230
232k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
232k
        seed.deserialize(value.into_deserializer())
1232
232k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::TdxModule>>
Line
Count
Source
1223
14.3k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
14.3k
    where
1225
14.3k
        T: de::DeserializeSeed<'de>,
1226
14.3k
    {
1227
14.3k
        let value = self.value.take();
1228
14.3k
        // Panic because this indicates a bug in the program rather than an
1229
14.3k
        // expected failure.
1230
14.3k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
14.3k
        seed.deserialize(value.into_deserializer())
1232
14.3k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModuleInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
80.9k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
80.9k
    where
1225
80.9k
        T: de::DeserializeSeed<'de>,
1226
80.9k
    {
1227
80.9k
        let value = self.value.take();
1228
80.9k
        // Panic because this indicates a bug in the program rather than an
1229
80.9k
        // expected failure.
1230
80.9k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
80.9k
        seed.deserialize(value.into_deserializer())
1232
80.9k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Line
Count
Source
1223
1.14k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
1.14k
    where
1225
1.14k
        T: de::DeserializeSeed<'de>,
1226
1.14k
    {
1227
1.14k
        let value = self.value.take();
1228
1.14k
        // Panic because this indicates a bug in the program rather than an
1229
1.14k
        // expected failure.
1230
1.14k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
1.14k
        seed.deserialize(value.into_deserializer())
1232
1.14k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdxModule as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
230k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
230k
    where
1225
230k
        T: de::DeserializeSeed<'de>,
1226
230k
    {
1227
230k
        let value = self.value.take();
1228
230k
        // Panic because this indicates a bug in the program rather than an
1229
230k
        // expected failure.
1230
230k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
230k
        seed.deserialize(value.into_deserializer())
1232
230k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::TdInfo>>
Line
Count
Source
1223
30.9k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
30.9k
    where
1225
30.9k
        T: de::DeserializeSeed<'de>,
1226
30.9k
    {
1227
30.9k
        let value = self.value.take();
1228
30.9k
        // Panic because this indicates a bug in the program rather than an
1229
30.9k
        // expected failure.
1230
30.9k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
30.9k
        seed.deserialize(value.into_deserializer())
1232
30.9k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::MigTdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
82.0k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
82.0k
    where
1225
82.0k
        T: de::DeserializeSeed<'de>,
1226
82.0k
    {
1227
82.0k
        let value = self.value.take();
1228
82.0k
        // Panic because this indicates a bug in the program rather than an
1229
82.0k
        // expected failure.
1230
82.0k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
82.0k
        seed.deserialize(value.into_deserializer())
1232
82.0k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<core::option::Option<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>>
Line
Count
Source
1223
319
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
319
    where
1225
319
        T: de::DeserializeSeed<'de>,
1226
319
    {
1227
319
        let value = self.value.take();
1228
319
        // Panic because this indicates a bug in the program rather than an
1229
319
        // expected failure.
1230
319
        let value = value.expect("MapAccess::next_value called before next_key");
1231
319
        seed.deserialize(value.into_deserializer())
1232
319
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, policy::config::Property>>>
Line
Count
Source
1223
33.3k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
33.3k
    where
1225
33.3k
        T: de::DeserializeSeed<'de>,
1226
33.3k
    {
1227
33.3k
        let value = self.value.take();
1228
33.3k
        // Panic because this indicates a bug in the program rather than an
1229
33.3k
        // expected failure.
1230
33.3k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
33.3k
        seed.deserialize(value.into_deserializer())
1232
33.3k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::TdInfo as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
229k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
229k
    where
1225
229k
        T: de::DeserializeSeed<'de>,
1226
229k
    {
1227
229k
        let value = self.value.take();
1228
229k
        // Panic because this indicates a bug in the program rather than an
1229
229k
        // expected failure.
1230
229k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
229k
        seed.deserialize(value.into_deserializer())
1232
229k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::Operation>>
Line
Count
Source
1223
3.70k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
3.70k
    where
1225
3.70k
        T: de::DeserializeSeed<'de>,
1226
3.70k
    {
1227
3.70k
        let value = self.value.take();
1228
3.70k
        // Panic because this indicates a bug in the program rather than an
1229
3.70k
        // expected failure.
1230
3.70k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
3.70k
        seed.deserialize(value.into_deserializer())
1232
3.70k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<policy::config::Reference>>
Line
Count
Source
1223
3.35k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
3.35k
    where
1225
3.35k
        T: de::DeserializeSeed<'de>,
1226
3.35k
    {
1227
3.35k
        let value = self.value.take();
1228
3.35k
        // Panic because this indicates a bug in the program rather than an
1229
3.35k
        // expected failure.
1230
3.35k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
3.35k
        seed.deserialize(value.into_deserializer())
1232
3.35k
    }
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<policy::config::Property as serde::de::Deserialize>::deserialize::__Visitor, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_value_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Line
Count
Source
1223
4.56k
    fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
1224
4.56k
    where
1225
4.56k
        T: de::DeserializeSeed<'de>,
1226
4.56k
    {
1227
4.56k
        let value = self.value.take();
1228
4.56k
        // Panic because this indicates a bug in the program rather than an
1229
4.56k
        // expected failure.
1230
4.56k
        let value = value.expect("MapAccess::next_value called before next_key");
1231
4.56k
        seed.deserialize(value.into_deserializer())
1232
4.56k
    }
1233
1234
511k
    fn next_entry_seed<TK, TV>(
1235
511k
        &mut self,
1236
511k
        kseed: TK,
1237
511k
        vseed: TV,
1238
511k
    ) -> Result<Option<(TK::Value, TV::Value)>, Self::Error>
1239
511k
    where
1240
511k
        TK: de::DeserializeSeed<'de>,
1241
511k
        TV: de::DeserializeSeed<'de>,
1242
511k
    {
1243
511k
        match self.next_pair() {
1244
403k
            Some((key, value)) => {
1245
403k
                let key = tri!(kseed.deserialize(key.into_deserializer()));
1246
403k
                let value = tri!(vseed.deserialize(value.into_deserializer()));
1247
385k
                Ok(Some((key, value)))
1248
            }
1249
107k
            None => Ok(None),
1250
        }
1251
511k
    }
Unexecuted instantiation: <serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, policy::config::Property>, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<alloc::string::String>, core::marker::PhantomData<policy::config::Property>>
Unexecuted instantiation: <serde::de::value::MapDeserializer<_, _> as serde::de::MapAccess>::next_entry_seed::<_, _>
<serde::de::value::MapDeserializer<core::iter::adapters::map::Map<core::slice::iter::Iter<(serde::__private::de::content::Content, serde::__private::de::content::Content)>, serde::__private::de::content::visit_content_map_ref<<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, policy::config::Property>, serde_json::error::Error>::{closure#0}>, serde_json::error::Error> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<alloc::string::String>, core::marker::PhantomData<policy::config::Property>>
Line
Count
Source
1234
511k
    fn next_entry_seed<TK, TV>(
1235
511k
        &mut self,
1236
511k
        kseed: TK,
1237
511k
        vseed: TV,
1238
511k
    ) -> Result<Option<(TK::Value, TV::Value)>, Self::Error>
1239
511k
    where
1240
511k
        TK: de::DeserializeSeed<'de>,
1241
511k
        TV: de::DeserializeSeed<'de>,
1242
511k
    {
1243
511k
        match self.next_pair() {
1244
403k
            Some((key, value)) => {
1245
403k
                let key = tri!(kseed.deserialize(key.into_deserializer()));
1246
403k
                let value = tri!(vseed.deserialize(value.into_deserializer()));
1247
385k
                Ok(Some((key, value)))
1248
            }
1249
107k
            None => Ok(None),
1250
        }
1251
511k
    }
1252
1253
0
    fn size_hint(&self) -> Option<usize> {
1254
0
        size_hint::from_bounds(&self.iter)
1255
0
    }
1256
}
1257
1258
impl<'de, I, E> de::SeqAccess<'de> for MapDeserializer<'de, I, E>
1259
where
1260
    I: Iterator,
1261
    I::Item: private::Pair,
1262
    First<I::Item>: IntoDeserializer<'de, E>,
1263
    Second<I::Item>: IntoDeserializer<'de, E>,
1264
    E: de::Error,
1265
{
1266
    type Error = E;
1267
1268
0
    fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1269
0
    where
1270
0
        T: de::DeserializeSeed<'de>,
1271
0
    {
1272
0
        match self.next_pair() {
1273
0
            Some((k, v)) => {
1274
0
                let de = PairDeserializer(k, v, PhantomData);
1275
0
                seed.deserialize(de).map(Some)
1276
            }
1277
0
            None => Ok(None),
1278
        }
1279
0
    }
1280
1281
0
    fn size_hint(&self) -> Option<usize> {
1282
0
        size_hint::from_bounds(&self.iter)
1283
0
    }
1284
}
1285
1286
// Cannot #[derive(Clone)] because of the bound `Second<I::Item>: Clone`.
1287
impl<'de, I, E> Clone for MapDeserializer<'de, I, E>
1288
where
1289
    I: Iterator + Clone,
1290
    I::Item: private::Pair,
1291
    Second<I::Item>: Clone,
1292
{
1293
0
    fn clone(&self) -> Self {
1294
0
        MapDeserializer {
1295
0
            iter: self.iter.clone(),
1296
0
            value: self.value.clone(),
1297
0
            count: self.count,
1298
0
            lifetime: self.lifetime,
1299
0
            error: self.error,
1300
0
        }
1301
0
    }
1302
}
1303
1304
impl<'de, I, E> Debug for MapDeserializer<'de, I, E>
1305
where
1306
    I: Iterator + Debug,
1307
    I::Item: private::Pair,
1308
    Second<I::Item>: Debug,
1309
{
1310
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1311
0
        formatter
1312
0
            .debug_struct("MapDeserializer")
1313
0
            .field("iter", &self.iter)
1314
0
            .field("value", &self.value)
1315
0
            .field("count", &self.count)
1316
0
            .finish()
1317
0
    }
1318
}
1319
1320
// Used in the `impl SeqAccess for MapDeserializer` to visit the map as a
1321
// sequence of pairs.
1322
struct PairDeserializer<A, B, E>(A, B, PhantomData<E>);
1323
1324
impl<'de, A, B, E> de::Deserializer<'de> for PairDeserializer<A, B, E>
1325
where
1326
    A: IntoDeserializer<'de, E>,
1327
    B: IntoDeserializer<'de, E>,
1328
    E: de::Error,
1329
{
1330
    type Error = E;
1331
1332
    forward_to_deserialize_any! {
1333
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
1334
        bytes byte_buf option unit unit_struct newtype_struct tuple_struct map
1335
        struct enum identifier ignored_any
1336
    }
1337
1338
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1339
0
    where
1340
0
        V: de::Visitor<'de>,
1341
0
    {
1342
0
        self.deserialize_seq(visitor)
1343
0
    }
1344
1345
0
    fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1346
0
    where
1347
0
        V: de::Visitor<'de>,
1348
0
    {
1349
0
        let mut pair_visitor = PairVisitor(Some(self.0), Some(self.1), PhantomData);
1350
0
        let pair = tri!(visitor.visit_seq(&mut pair_visitor));
1351
0
        if pair_visitor.1.is_none() {
1352
0
            Ok(pair)
1353
        } else {
1354
0
            let remaining = pair_visitor.size_hint().unwrap();
1355
0
            // First argument is the number of elements in the data, second
1356
0
            // argument is the number of elements expected by the Deserialize.
1357
0
            Err(de::Error::invalid_length(2, &ExpectedInSeq(2 - remaining)))
1358
        }
1359
0
    }
1360
1361
0
    fn deserialize_tuple<V>(self, len: usize, visitor: V) -> Result<V::Value, Self::Error>
1362
0
    where
1363
0
        V: de::Visitor<'de>,
1364
0
    {
1365
0
        if len == 2 {
1366
0
            self.deserialize_seq(visitor)
1367
        } else {
1368
            // First argument is the number of elements in the data, second
1369
            // argument is the number of elements expected by the Deserialize.
1370
0
            Err(de::Error::invalid_length(2, &ExpectedInSeq(len)))
1371
        }
1372
0
    }
1373
}
1374
1375
struct PairVisitor<A, B, E>(Option<A>, Option<B>, PhantomData<E>);
1376
1377
impl<'de, A, B, E> de::SeqAccess<'de> for PairVisitor<A, B, E>
1378
where
1379
    A: IntoDeserializer<'de, E>,
1380
    B: IntoDeserializer<'de, E>,
1381
    E: de::Error,
1382
{
1383
    type Error = E;
1384
1385
0
    fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1386
0
    where
1387
0
        T: de::DeserializeSeed<'de>,
1388
0
    {
1389
0
        if let Some(k) = self.0.take() {
1390
0
            seed.deserialize(k.into_deserializer()).map(Some)
1391
0
        } else if let Some(v) = self.1.take() {
1392
0
            seed.deserialize(v.into_deserializer()).map(Some)
1393
        } else {
1394
0
            Ok(None)
1395
        }
1396
0
    }
1397
1398
0
    fn size_hint(&self) -> Option<usize> {
1399
0
        if self.0.is_some() {
1400
0
            Some(2)
1401
0
        } else if self.1.is_some() {
1402
0
            Some(1)
1403
        } else {
1404
0
            Some(0)
1405
        }
1406
0
    }
1407
}
1408
1409
struct ExpectedInMap(usize);
1410
1411
impl Expected for ExpectedInMap {
1412
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1413
0
        if self.0 == 1 {
1414
0
            formatter.write_str("1 element in map")
1415
        } else {
1416
0
            write!(formatter, "{} elements in map", self.0)
1417
        }
1418
0
    }
1419
}
1420
1421
////////////////////////////////////////////////////////////////////////////////
1422
1423
#[cfg(any(feature = "std", feature = "alloc"))]
1424
#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
1425
impl<'de, K, V, E> IntoDeserializer<'de, E> for BTreeMap<K, V>
1426
where
1427
    K: IntoDeserializer<'de, E> + Eq + Ord,
1428
    V: IntoDeserializer<'de, E>,
1429
    E: de::Error,
1430
{
1431
    type Deserializer = MapDeserializer<'de, <Self as IntoIterator>::IntoIter, E>;
1432
1433
0
    fn into_deserializer(self) -> Self::Deserializer {
1434
0
        MapDeserializer::new(self.into_iter())
1435
0
    }
1436
}
1437
1438
#[cfg(feature = "std")]
1439
#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
1440
impl<'de, K, V, S, E> IntoDeserializer<'de, E> for HashMap<K, V, S>
1441
where
1442
    K: IntoDeserializer<'de, E> + Eq + Hash,
1443
    V: IntoDeserializer<'de, E>,
1444
    S: BuildHasher,
1445
    E: de::Error,
1446
{
1447
    type Deserializer = MapDeserializer<'de, <Self as IntoIterator>::IntoIter, E>;
1448
1449
0
    fn into_deserializer(self) -> Self::Deserializer {
1450
0
        MapDeserializer::new(self.into_iter())
1451
0
    }
1452
}
1453
1454
////////////////////////////////////////////////////////////////////////////////
1455
1456
/// A deserializer holding a `MapAccess`.
1457
#[derive(Clone, Debug)]
1458
pub struct MapAccessDeserializer<A> {
1459
    map: A,
1460
}
1461
1462
impl<A> MapAccessDeserializer<A> {
1463
    /// Construct a new `MapAccessDeserializer<A>`.
1464
0
    pub fn new(map: A) -> Self {
1465
0
        MapAccessDeserializer { map }
1466
0
    }
1467
}
1468
1469
impl<'de, A> de::Deserializer<'de> for MapAccessDeserializer<A>
1470
where
1471
    A: de::MapAccess<'de>,
1472
{
1473
    type Error = A::Error;
1474
1475
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1476
0
    where
1477
0
        V: de::Visitor<'de>,
1478
0
    {
1479
0
        visitor.visit_map(self.map)
1480
0
    }
1481
1482
0
    fn deserialize_enum<V>(
1483
0
        self,
1484
0
        _name: &str,
1485
0
        _variants: &'static [&'static str],
1486
0
        visitor: V,
1487
0
    ) -> Result<V::Value, Self::Error>
1488
0
    where
1489
0
        V: de::Visitor<'de>,
1490
0
    {
1491
0
        visitor.visit_enum(self)
1492
0
    }
1493
1494
    forward_to_deserialize_any! {
1495
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
1496
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
1497
        tuple_struct map struct identifier ignored_any
1498
    }
1499
}
1500
1501
impl<'de, A> de::EnumAccess<'de> for MapAccessDeserializer<A>
1502
where
1503
    A: de::MapAccess<'de>,
1504
{
1505
    type Error = A::Error;
1506
    type Variant = private::MapAsEnum<A>;
1507
1508
0
    fn variant_seed<T>(mut self, seed: T) -> Result<(T::Value, Self::Variant), Self::Error>
1509
0
    where
1510
0
        T: de::DeserializeSeed<'de>,
1511
0
    {
1512
0
        match tri!(self.map.next_key_seed(seed)) {
1513
0
            Some(key) => Ok((key, private::map_as_enum(self.map))),
1514
0
            None => Err(de::Error::invalid_type(de::Unexpected::Map, &"enum")),
1515
        }
1516
0
    }
1517
}
1518
1519
////////////////////////////////////////////////////////////////////////////////
1520
1521
/// A deserializer holding an `EnumAccess`.
1522
#[derive(Clone, Debug)]
1523
pub struct EnumAccessDeserializer<A> {
1524
    access: A,
1525
}
1526
1527
impl<A> EnumAccessDeserializer<A> {
1528
    /// Construct a new `EnumAccessDeserializer<A>`.
1529
0
    pub fn new(access: A) -> Self {
1530
0
        EnumAccessDeserializer { access }
1531
0
    }
1532
}
1533
1534
impl<'de, A> de::Deserializer<'de> for EnumAccessDeserializer<A>
1535
where
1536
    A: de::EnumAccess<'de>,
1537
{
1538
    type Error = A::Error;
1539
1540
0
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1541
0
    where
1542
0
        V: de::Visitor<'de>,
1543
0
    {
1544
0
        visitor.visit_enum(self.access)
1545
0
    }
1546
1547
    forward_to_deserialize_any! {
1548
        bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
1549
        bytes byte_buf option unit unit_struct newtype_struct seq tuple
1550
        tuple_struct map struct enum identifier ignored_any
1551
    }
1552
}
1553
1554
////////////////////////////////////////////////////////////////////////////////
1555
1556
mod private {
1557
    use crate::lib::*;
1558
1559
    use crate::de::{
1560
        self, DeserializeSeed, Deserializer, MapAccess, Unexpected, VariantAccess, Visitor,
1561
    };
1562
1563
    pub struct UnitOnly<E> {
1564
        marker: PhantomData<E>,
1565
    }
1566
1567
0
    pub fn unit_only<T, E>(t: T) -> (T, UnitOnly<E>) {
1568
0
        (
1569
0
            t,
1570
0
            UnitOnly {
1571
0
                marker: PhantomData,
1572
0
            },
1573
0
        )
1574
0
    }
1575
1576
    impl<'de, E> de::VariantAccess<'de> for UnitOnly<E>
1577
    where
1578
        E: de::Error,
1579
    {
1580
        type Error = E;
1581
1582
0
        fn unit_variant(self) -> Result<(), Self::Error> {
1583
0
            Ok(())
1584
0
        }
1585
1586
0
        fn newtype_variant_seed<T>(self, _seed: T) -> Result<T::Value, Self::Error>
1587
0
        where
1588
0
            T: de::DeserializeSeed<'de>,
1589
0
        {
1590
0
            Err(de::Error::invalid_type(
1591
0
                Unexpected::UnitVariant,
1592
0
                &"newtype variant",
1593
0
            ))
1594
0
        }
1595
1596
0
        fn tuple_variant<V>(self, _len: usize, _visitor: V) -> Result<V::Value, Self::Error>
1597
0
        where
1598
0
            V: de::Visitor<'de>,
1599
0
        {
1600
0
            Err(de::Error::invalid_type(
1601
0
                Unexpected::UnitVariant,
1602
0
                &"tuple variant",
1603
0
            ))
1604
0
        }
1605
1606
0
        fn struct_variant<V>(
1607
0
            self,
1608
0
            _fields: &'static [&'static str],
1609
0
            _visitor: V,
1610
0
        ) -> Result<V::Value, Self::Error>
1611
0
        where
1612
0
            V: de::Visitor<'de>,
1613
0
        {
1614
0
            Err(de::Error::invalid_type(
1615
0
                Unexpected::UnitVariant,
1616
0
                &"struct variant",
1617
0
            ))
1618
0
        }
1619
    }
1620
1621
    pub struct MapAsEnum<A> {
1622
        map: A,
1623
    }
1624
1625
0
    pub fn map_as_enum<A>(map: A) -> MapAsEnum<A> {
1626
0
        MapAsEnum { map }
1627
0
    }
1628
1629
    impl<'de, A> VariantAccess<'de> for MapAsEnum<A>
1630
    where
1631
        A: MapAccess<'de>,
1632
    {
1633
        type Error = A::Error;
1634
1635
0
        fn unit_variant(mut self) -> Result<(), Self::Error> {
1636
0
            self.map.next_value()
1637
0
        }
1638
1639
0
        fn newtype_variant_seed<T>(mut self, seed: T) -> Result<T::Value, Self::Error>
1640
0
        where
1641
0
            T: DeserializeSeed<'de>,
1642
0
        {
1643
0
            self.map.next_value_seed(seed)
1644
0
        }
1645
1646
0
        fn tuple_variant<V>(mut self, len: usize, visitor: V) -> Result<V::Value, Self::Error>
1647
0
        where
1648
0
            V: Visitor<'de>,
1649
0
        {
1650
0
            self.map.next_value_seed(SeedTupleVariant { len, visitor })
1651
0
        }
1652
1653
0
        fn struct_variant<V>(
1654
0
            mut self,
1655
0
            _fields: &'static [&'static str],
1656
0
            visitor: V,
1657
0
        ) -> Result<V::Value, Self::Error>
1658
0
        where
1659
0
            V: Visitor<'de>,
1660
0
        {
1661
0
            self.map.next_value_seed(SeedStructVariant { visitor })
1662
0
        }
1663
    }
1664
1665
    struct SeedTupleVariant<V> {
1666
        len: usize,
1667
        visitor: V,
1668
    }
1669
1670
    impl<'de, V> DeserializeSeed<'de> for SeedTupleVariant<V>
1671
    where
1672
        V: Visitor<'de>,
1673
    {
1674
        type Value = V::Value;
1675
1676
0
        fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
1677
0
        where
1678
0
            D: Deserializer<'de>,
1679
0
        {
1680
0
            deserializer.deserialize_tuple(self.len, self.visitor)
1681
0
        }
1682
    }
1683
1684
    struct SeedStructVariant<V> {
1685
        visitor: V,
1686
    }
1687
1688
    impl<'de, V> DeserializeSeed<'de> for SeedStructVariant<V>
1689
    where
1690
        V: Visitor<'de>,
1691
    {
1692
        type Value = V::Value;
1693
1694
0
        fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
1695
0
        where
1696
0
            D: Deserializer<'de>,
1697
0
        {
1698
0
            deserializer.deserialize_map(self.visitor)
1699
0
        }
1700
    }
1701
1702
    /// Avoid having to restate the generic types on `MapDeserializer`. The
1703
    /// `Iterator::Item` contains enough information to figure out K and V.
1704
    pub trait Pair {
1705
        type First;
1706
        type Second;
1707
        fn split(self) -> (Self::First, Self::Second);
1708
    }
1709
1710
    impl<A, B> Pair for (A, B) {
1711
        type First = A;
1712
        type Second = B;
1713
1.57M
        fn split(self) -> (A, B) {
1714
1.57M
            self
1715
1.57M
        }
Unexecuted instantiation: <(serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>, serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>) as serde::de::value::private::Pair>::split
Unexecuted instantiation: <(_, _) as serde::de::value::private::Pair>::split
<(serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>, serde::__private::de::content::ContentRefDeserializer<serde_json::error::Error>) as serde::de::value::private::Pair>::split
Line
Count
Source
1713
1.57M
        fn split(self) -> (A, B) {
1714
1.57M
            self
1715
1.57M
        }
1716
    }
1717
1718
    pub type First<T> = <T as Pair>::First;
1719
    pub type Second<T> = <T as Pair>::Second;
1720
}