Coverage Report

Created: 2025-07-23 06:18

/rust/registry/src/index.crates.io-6f17d22bba15001f/serde-1.0.140/src/de/mod.rs
Line
Count
Source (jump to first uncovered line)
1
//! Generic data structure deserialization framework.
2
//!
3
//! The two most important traits in this module are [`Deserialize`] and
4
//! [`Deserializer`].
5
//!
6
//!  - **A type that implements `Deserialize` is a data structure** that can be
7
//!    deserialized from any data format supported by Serde, and conversely
8
//!  - **A type that implements `Deserializer` is a data format** that can
9
//!    deserialize any data structure supported by Serde.
10
//!
11
//! # The Deserialize trait
12
//!
13
//! Serde provides [`Deserialize`] implementations for many Rust primitive and
14
//! standard library types. The complete list is below. All of these can be
15
//! deserialized using Serde out of the box.
16
//!
17
//! Additionally, Serde provides a procedural macro called [`serde_derive`] to
18
//! automatically generate [`Deserialize`] implementations for structs and enums
19
//! in your program. See the [derive section of the manual] for how to use this.
20
//!
21
//! In rare cases it may be necessary to implement [`Deserialize`] manually for
22
//! some type in your program. See the [Implementing `Deserialize`] section of
23
//! the manual for more about this.
24
//!
25
//! Third-party crates may provide [`Deserialize`] implementations for types
26
//! that they expose. For example the [`linked-hash-map`] crate provides a
27
//! [`LinkedHashMap<K, V>`] type that is deserializable by Serde because the
28
//! crate provides an implementation of [`Deserialize`] for it.
29
//!
30
//! # The Deserializer trait
31
//!
32
//! [`Deserializer`] implementations are provided by third-party crates, for
33
//! example [`serde_json`], [`serde_yaml`] and [`bincode`].
34
//!
35
//! A partial list of well-maintained formats is given on the [Serde
36
//! website][data formats].
37
//!
38
//! # Implementations of Deserialize provided by Serde
39
//!
40
//! This is a slightly different set of types than what is supported for
41
//! serialization. Some types can be serialized by Serde but not deserialized.
42
//! One example is `OsStr`.
43
//!
44
//!  - **Primitive types**:
45
//!    - bool
46
//!    - i8, i16, i32, i64, i128, isize
47
//!    - u8, u16, u32, u64, u128, usize
48
//!    - f32, f64
49
//!    - char
50
//!  - **Compound types**:
51
//!    - \[T; 0\] through \[T; 32\]
52
//!    - tuples up to size 16
53
//!  - **Common standard library types**:
54
//!    - String
55
//!    - Option\<T\>
56
//!    - Result\<T, E\>
57
//!    - PhantomData\<T\>
58
//!  - **Wrapper types**:
59
//!    - Box\<T\>
60
//!    - Box\<\[T\]\>
61
//!    - Box\<str\>
62
//!    - Cow\<'a, T\>
63
//!    - Cell\<T\>
64
//!    - RefCell\<T\>
65
//!    - Mutex\<T\>
66
//!    - RwLock\<T\>
67
//!    - Rc\<T\>&emsp;*(if* features = ["rc"] *is enabled)*
68
//!    - Arc\<T\>&emsp;*(if* features = ["rc"] *is enabled)*
69
//!  - **Collection types**:
70
//!    - BTreeMap\<K, V\>
71
//!    - BTreeSet\<T\>
72
//!    - BinaryHeap\<T\>
73
//!    - HashMap\<K, V, H\>
74
//!    - HashSet\<T, H\>
75
//!    - LinkedList\<T\>
76
//!    - VecDeque\<T\>
77
//!    - Vec\<T\>
78
//!  - **Zero-copy types**:
79
//!    - &str
80
//!    - &\[u8\]
81
//!  - **FFI types**:
82
//!    - CString
83
//!    - Box\<CStr\>
84
//!    - OsString
85
//!  - **Miscellaneous standard library types**:
86
//!    - Duration
87
//!    - SystemTime
88
//!    - Path
89
//!    - PathBuf
90
//!    - Range\<T\>
91
//!    - RangeInclusive\<T\>
92
//!    - Bound\<T\>
93
//!    - num::NonZero*
94
//!    - `!` *(unstable)*
95
//!  - **Net types**:
96
//!    - IpAddr
97
//!    - Ipv4Addr
98
//!    - Ipv6Addr
99
//!    - SocketAddr
100
//!    - SocketAddrV4
101
//!    - SocketAddrV6
102
//!
103
//! [Implementing `Deserialize`]: https://serde.rs/impl-deserialize.html
104
//! [`Deserialize`]: ../trait.Deserialize.html
105
//! [`Deserializer`]: ../trait.Deserializer.html
106
//! [`LinkedHashMap<K, V>`]: https://docs.rs/linked-hash-map/*/linked_hash_map/struct.LinkedHashMap.html
107
//! [`bincode`]: https://github.com/bincode-org/bincode
108
//! [`linked-hash-map`]: https://crates.io/crates/linked-hash-map
109
//! [`serde_derive`]: https://crates.io/crates/serde_derive
110
//! [`serde_json`]: https://github.com/serde-rs/json
111
//! [`serde_yaml`]: https://github.com/dtolnay/serde-yaml
112
//! [derive section of the manual]: https://serde.rs/derive.html
113
//! [data formats]: https://serde.rs/#data-formats
114
115
use lib::*;
116
117
////////////////////////////////////////////////////////////////////////////////
118
119
pub mod value;
120
121
#[cfg(not(no_integer128))]
122
mod format;
123
mod ignored_any;
124
mod impls;
125
mod utf8;
126
127
pub use self::ignored_any::IgnoredAny;
128
129
#[cfg(feature = "std")]
130
#[doc(no_inline)]
131
pub use std::error::Error as StdError;
132
#[cfg(not(feature = "std"))]
133
#[doc(no_inline)]
134
pub use std_error::Error as StdError;
135
136
////////////////////////////////////////////////////////////////////////////////
137
138
macro_rules! declare_error_trait {
139
    (Error: Sized $(+ $($supertrait:ident)::+)*) => {
140
        /// The `Error` trait allows `Deserialize` implementations to create descriptive
141
        /// error messages belonging to the `Deserializer` against which they are
142
        /// currently running.
143
        ///
144
        /// Every `Deserializer` declares an `Error` type that encompasses both
145
        /// general-purpose deserialization errors as well as errors specific to the
146
        /// particular deserialization format. For example the `Error` type of
147
        /// `serde_json` can represent errors like an invalid JSON escape sequence or an
148
        /// unterminated string literal, in addition to the error cases that are part of
149
        /// this trait.
150
        ///
151
        /// Most deserializers should only need to provide the `Error::custom` method
152
        /// and inherit the default behavior for the other methods.
153
        ///
154
        /// # Example implementation
155
        ///
156
        /// The [example data format] presented on the website shows an error
157
        /// type appropriate for a basic JSON data format.
158
        ///
159
        /// [example data format]: https://serde.rs/data-format.html
160
        pub trait Error: Sized $(+ $($supertrait)::+)* {
161
            /// Raised when there is general error when deserializing a type.
162
            ///
163
            /// The message should not be capitalized and should not end with a period.
164
            ///
165
            /// ```edition2018
166
            /// # use std::str::FromStr;
167
            /// #
168
            /// # struct IpAddr;
169
            /// #
170
            /// # impl FromStr for IpAddr {
171
            /// #     type Err = String;
172
            /// #
173
            /// #     fn from_str(_: &str) -> Result<Self, String> {
174
            /// #         unimplemented!()
175
            /// #     }
176
            /// # }
177
            /// #
178
            /// use serde::de::{self, Deserialize, Deserializer};
179
            ///
180
            /// impl<'de> Deserialize<'de> for IpAddr {
181
            ///     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
182
            ///     where
183
            ///         D: Deserializer<'de>,
184
            ///     {
185
            ///         let s = String::deserialize(deserializer)?;
186
            ///         s.parse().map_err(de::Error::custom)
187
            ///     }
188
            /// }
189
            /// ```
190
            fn custom<T>(msg: T) -> Self
191
            where
192
                T: Display;
193
194
            /// Raised when a `Deserialize` receives a type different from what it was
195
            /// expecting.
196
            ///
197
            /// The `unexp` argument provides information about what type was received.
198
            /// This is the type that was present in the input file or other source data
199
            /// of the Deserializer.
200
            ///
201
            /// The `exp` argument provides information about what type was being
202
            /// expected. This is the type that is written in the program.
203
            ///
204
            /// For example if we try to deserialize a String out of a JSON file
205
            /// containing an integer, the unexpected type is the integer and the
206
            /// expected type is the string.
207
            #[cold]
208
0
            fn invalid_type(unexp: Unexpected, exp: &Expected) -> Self {
209
0
                Error::custom(format_args!("invalid type: {}, expected {}", unexp, exp))
210
0
            }
Unexecuted instantiation: <_ as serde::de::Error>::invalid_type
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::invalid_type
Unexecuted instantiation: <ciborium::de::error::Error<std::io::error::Error> as serde::de::Error>::invalid_type
Unexecuted instantiation: <ciborium::value::error::Error as serde::de::Error>::invalid_type
211
212
            /// Raised when a `Deserialize` receives a value of the right type but that
213
            /// is wrong for some other reason.
214
            ///
215
            /// The `unexp` argument provides information about what value was received.
216
            /// This is the value that was present in the input file or other source
217
            /// data of the Deserializer.
218
            ///
219
            /// The `exp` argument provides information about what value was being
220
            /// expected. This is the type that is written in the program.
221
            ///
222
            /// For example if we try to deserialize a String out of some binary data
223
            /// that is not valid UTF-8, the unexpected value is the bytes and the
224
            /// expected value is a string.
225
            #[cold]
226
0
            fn invalid_value(unexp: Unexpected, exp: &Expected) -> Self {
227
0
                Error::custom(format_args!("invalid value: {}, expected {}", unexp, exp))
228
0
            }
Unexecuted instantiation: <_ as serde::de::Error>::invalid_value
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::invalid_value
Unexecuted instantiation: <ciborium::value::error::Error as serde::de::Error>::invalid_value
Unexecuted instantiation: <serde_json::error::Error as serde::de::Error>::invalid_value
229
230
            /// Raised when deserializing a sequence or map and the input data contains
231
            /// too many or too few elements.
232
            ///
233
            /// The `len` argument is the number of elements encountered. The sequence
234
            /// or map may have expected more arguments or fewer arguments.
235
            ///
236
            /// The `exp` argument provides information about what data was being
237
            /// expected. For example `exp` might say that a tuple of size 6 was
238
            /// expected.
239
            #[cold]
240
0
            fn invalid_length(len: usize, exp: &Expected) -> Self {
241
0
                Error::custom(format_args!("invalid length {}, expected {}", len, exp))
242
0
            }
Unexecuted instantiation: <_ as serde::de::Error>::invalid_length
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::invalid_length
Unexecuted instantiation: <ciborium::value::error::Error as serde::de::Error>::invalid_length
Unexecuted instantiation: <serde_json::error::Error as serde::de::Error>::invalid_length
243
244
            /// Raised when a `Deserialize` enum type received a variant with an
245
            /// unrecognized name.
246
            #[cold]
247
0
            fn unknown_variant(variant: &str, expected: &'static [&'static str]) -> Self {
248
0
                if expected.is_empty() {
249
0
                    Error::custom(format_args!(
250
0
                        "unknown variant `{}`, there are no variants",
251
0
                        variant
252
0
                    ))
253
                } else {
254
0
                    Error::custom(format_args!(
255
0
                        "unknown variant `{}`, expected {}",
256
0
                        variant,
257
0
                        OneOf { names: expected }
258
0
                    ))
259
                }
260
0
            }
Unexecuted instantiation: <_ as serde::de::Error>::unknown_variant
Unexecuted instantiation: <ciborium::value::error::Error as serde::de::Error>::unknown_variant
Unexecuted instantiation: <serde_json::error::Error as serde::de::Error>::unknown_variant
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::unknown_variant
261
262
            /// Raised when a `Deserialize` struct type received a field with an
263
            /// unrecognized name.
264
            #[cold]
265
0
            fn unknown_field(field: &str, expected: &'static [&'static str]) -> Self {
266
0
                if expected.is_empty() {
267
0
                    Error::custom(format_args!(
268
0
                        "unknown field `{}`, there are no fields",
269
0
                        field
270
0
                    ))
271
                } else {
272
0
                    Error::custom(format_args!(
273
0
                        "unknown field `{}`, expected {}",
274
0
                        field,
275
0
                        OneOf { names: expected }
276
0
                    ))
277
                }
278
0
            }
Unexecuted instantiation: <_ as serde::de::Error>::unknown_field
Unexecuted instantiation: <ciborium::value::error::Error as serde::de::Error>::unknown_field
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::unknown_field
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::unknown_field
279
280
            /// Raised when a `Deserialize` struct type expected to receive a required
281
            /// field with a particular name but that field was not present in the
282
            /// input.
283
            #[cold]
284
0
            fn missing_field(field: &'static str) -> Self {
285
0
                Error::custom(format_args!("missing field `{}`", field))
286
0
            }
Unexecuted instantiation: <_ as serde::de::Error>::missing_field
Unexecuted instantiation: <ciborium::de::error::Error<std::io::error::Error> as serde::de::Error>::missing_field
Unexecuted instantiation: <serde_json::error::Error as serde::de::Error>::missing_field
Unexecuted instantiation: <ciborium::value::error::Error as serde::de::Error>::missing_field
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::missing_field
287
288
            /// Raised when a `Deserialize` struct type received more than one of the
289
            /// same field.
290
            #[cold]
291
0
            fn duplicate_field(field: &'static str) -> Self {
292
0
                Error::custom(format_args!("duplicate field `{}`", field))
293
0
            }
Unexecuted instantiation: <_ as serde::de::Error>::duplicate_field
Unexecuted instantiation: <ciborium::de::error::Error<std::io::error::Error> as serde::de::Error>::duplicate_field
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::duplicate_field
Unexecuted instantiation: <serde_json::error::Error as serde::de::Error>::duplicate_field
Unexecuted instantiation: <ciborium::value::error::Error as serde::de::Error>::duplicate_field
Unexecuted instantiation: <serde_keyvalue::key_values::ParseError as serde::de::Error>::duplicate_field
294
        }
295
    }
296
}
297
298
#[cfg(feature = "std")]
299
declare_error_trait!(Error: Sized + StdError);
300
301
#[cfg(not(feature = "std"))]
302
declare_error_trait!(Error: Sized + Debug + Display);
303
304
/// `Unexpected` represents an unexpected invocation of any one of the `Visitor`
305
/// trait methods.
306
///
307
/// This is used as an argument to the `invalid_type`, `invalid_value`, and
308
/// `invalid_length` methods of the `Error` trait to build error messages.
309
///
310
/// ```edition2018
311
/// # use std::fmt;
312
/// #
313
/// # use serde::de::{self, Unexpected, Visitor};
314
/// #
315
/// # struct Example;
316
/// #
317
/// # impl<'de> Visitor<'de> for Example {
318
/// #     type Value = ();
319
/// #
320
/// #     fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
321
/// #         write!(formatter, "definitely not a boolean")
322
/// #     }
323
/// #
324
/// fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
325
/// where
326
///     E: de::Error,
327
/// {
328
///     Err(de::Error::invalid_type(Unexpected::Bool(v), &self))
329
/// }
330
/// # }
331
/// ```
332
#[derive(Copy, Clone, PartialEq, Debug)]
333
pub enum Unexpected<'a> {
334
    /// The input contained a boolean value that was not expected.
335
    Bool(bool),
336
337
    /// The input contained an unsigned integer `u8`, `u16`, `u32` or `u64` that
338
    /// was not expected.
339
    Unsigned(u64),
340
341
    /// The input contained a signed integer `i8`, `i16`, `i32` or `i64` that
342
    /// was not expected.
343
    Signed(i64),
344
345
    /// The input contained a floating point `f32` or `f64` that was not
346
    /// expected.
347
    Float(f64),
348
349
    /// The input contained a `char` that was not expected.
350
    Char(char),
351
352
    /// The input contained a `&str` or `String` that was not expected.
353
    Str(&'a str),
354
355
    /// The input contained a `&[u8]` or `Vec<u8>` that was not expected.
356
    Bytes(&'a [u8]),
357
358
    /// The input contained a unit `()` that was not expected.
359
    Unit,
360
361
    /// The input contained an `Option<T>` that was not expected.
362
    Option,
363
364
    /// The input contained a newtype struct that was not expected.
365
    NewtypeStruct,
366
367
    /// The input contained a sequence that was not expected.
368
    Seq,
369
370
    /// The input contained a map that was not expected.
371
    Map,
372
373
    /// The input contained an enum that was not expected.
374
    Enum,
375
376
    /// The input contained a unit variant that was not expected.
377
    UnitVariant,
378
379
    /// The input contained a newtype variant that was not expected.
380
    NewtypeVariant,
381
382
    /// The input contained a tuple variant that was not expected.
383
    TupleVariant,
384
385
    /// The input contained a struct variant that was not expected.
386
    StructVariant,
387
388
    /// A message stating what uncategorized thing the input contained that was
389
    /// not expected.
390
    ///
391
    /// The message should be a noun or noun phrase, not capitalized and without
392
    /// a period. An example message is "unoriginal superhero".
393
    Other(&'a str),
394
}
395
396
impl<'a> fmt::Display for Unexpected<'a> {
397
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
398
        use self::Unexpected::*;
399
0
        match *self {
400
0
            Bool(b) => write!(formatter, "boolean `{}`", b),
401
0
            Unsigned(i) => write!(formatter, "integer `{}`", i),
402
0
            Signed(i) => write!(formatter, "integer `{}`", i),
403
0
            Float(f) => write!(formatter, "floating point `{}`", f),
404
0
            Char(c) => write!(formatter, "character `{}`", c),
405
0
            Str(s) => write!(formatter, "string {:?}", s),
406
0
            Bytes(_) => write!(formatter, "byte array"),
407
0
            Unit => write!(formatter, "unit value"),
408
0
            Option => write!(formatter, "Option value"),
409
0
            NewtypeStruct => write!(formatter, "newtype struct"),
410
0
            Seq => write!(formatter, "sequence"),
411
0
            Map => write!(formatter, "map"),
412
0
            Enum => write!(formatter, "enum"),
413
0
            UnitVariant => write!(formatter, "unit variant"),
414
0
            NewtypeVariant => write!(formatter, "newtype variant"),
415
0
            TupleVariant => write!(formatter, "tuple variant"),
416
0
            StructVariant => write!(formatter, "struct variant"),
417
0
            Other(other) => formatter.write_str(other),
418
        }
419
0
    }
420
}
421
422
/// `Expected` represents an explanation of what data a `Visitor` was expecting
423
/// to receive.
424
///
425
/// This is used as an argument to the `invalid_type`, `invalid_value`, and
426
/// `invalid_length` methods of the `Error` trait to build error messages. The
427
/// message should be a noun or noun phrase that completes the sentence "This
428
/// Visitor expects to receive ...", for example the message could be "an
429
/// integer between 0 and 64". The message should not be capitalized and should
430
/// not end with a period.
431
///
432
/// Within the context of a `Visitor` implementation, the `Visitor` itself
433
/// (`&self`) is an implementation of this trait.
434
///
435
/// ```edition2018
436
/// # use std::fmt;
437
/// #
438
/// # use serde::de::{self, Unexpected, Visitor};
439
/// #
440
/// # struct Example;
441
/// #
442
/// # impl<'de> Visitor<'de> for Example {
443
/// #     type Value = ();
444
/// #
445
/// #     fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
446
/// #         write!(formatter, "definitely not a boolean")
447
/// #     }
448
/// #
449
/// fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
450
/// where
451
///     E: de::Error,
452
/// {
453
///     Err(de::Error::invalid_type(Unexpected::Bool(v), &self))
454
/// }
455
/// # }
456
/// ```
457
///
458
/// Outside of a `Visitor`, `&"..."` can be used.
459
///
460
/// ```edition2018
461
/// # use serde::de::{self, Unexpected};
462
/// #
463
/// # fn example<E>() -> Result<(), E>
464
/// # where
465
/// #     E: de::Error,
466
/// # {
467
/// #     let v = true;
468
/// return Err(de::Error::invalid_type(Unexpected::Bool(v), &"a negative integer"));
469
/// # }
470
/// ```
471
pub trait Expected {
472
    /// Format an explanation of what data was being expected. Same signature as
473
    /// the `Display` and `Debug` traits.
474
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result;
475
}
476
477
impl<'de, T> Expected for T
478
where
479
    T: Visitor<'de>,
480
{
481
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
482
0
        self.expecting(formatter)
483
0
    }
Unexecuted instantiation: <serde::de::impls::UnitVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <_ as serde::de::Expected>::fmt
Unexecuted instantiation: <<base::mmap::Protection as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<snapshot::SnapshotReader as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<snapshot::SnapshotWriter as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::sys::linux::VmMemoryMappingResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::vhost::control_socket::VhostDevRequest as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::UnpinRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[core::option::Option<devices::pci::pci_configuration::PciBarConfiguration>; 7]> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[hypervisor::x86_64::PitChannelState; 3]> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[devices::virtio::resource_bridge::PlaneInfo; 4]> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[bool; 7]> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[u8; 32]> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[u8; 8]> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[u16; 3]> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[u64; 4]> as serde::de::Expected>::fmt
Unexecuted instantiation: <<(_, _) as serde::de::Deserialize>::deserialize::TupleVisitor<devices::bus::BusRange, devices::bus::BusType> as serde::de::Expected>::fmt
Unexecuted instantiation: <<(_, _) as serde::de::Deserialize>::deserialize::TupleVisitor<u8, devices::pflash::State> as serde::de::Expected>::fmt
Unexecuted instantiation: <<(_, _) as serde::de::Deserialize>::deserialize::TupleVisitor<usize, snapshot::any_snapshot::AnySnapshot> as serde::de::Expected>::fmt
Unexecuted instantiation: <<(_, _) as serde::de::Deserialize>::deserialize::TupleVisitor<usize, usize> as serde::de::Expected>::fmt
Unexecuted instantiation: <<(_, _) as serde::de::Deserialize>::deserialize::TupleVisitor<u64, u64> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<alloc::string::String, u16> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<devices::bus::BusRange> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<resources::pci_address::PciAddress> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<devices::virtio::input::InputConfigFileEvent> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<devices::virtio::input::InputConfigFileAbsInfo> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<devices::virtio::iommu::memory_mapper::MemRegion> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<(devices::bus::BusRange, devices::bus::BusType)> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<(u64, u64)> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<u16> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::PathBufVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<core::result::Result<_, _> as serde::de::Deserialize>::deserialize::Field as serde::de::Deserialize>::deserialize::FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::iommu::ipc_memory_mapper::IommuResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::proxy::SnapshotFile as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::resource_bridge::PlaneInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::resource_bridge::BufferInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::resource_bridge::ResourceResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::bus::BusType as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::bus::BusRange as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<crypto_generic::SecureByteVec as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<crypto_generic::CryptKey as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::VirtioIOMMURequest as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::BatStatus as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::BatHealth as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::BatControlCommand as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::iommu::memory_mapper::MemRegion as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::input::InputConfigFile as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::input::InputConfigFileEvent as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<devices::virtio::input::InputConfigFileAbsInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[vm_control::UsbControlAttachedDevice; 16]> as serde::de::Expected>::fmt
Unexecuted instantiation: <<(_, _) as serde::de::Deserialize>::deserialize::TupleVisitor<u32, u32> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<usize, (u32, u32)> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<alloc::string::String> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::StringVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<i32 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<u16 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<usize as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <base::descriptor_reflection::deserialize_descriptor::DescriptorVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::DiskControlResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::VirtioIOMMUVfioResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::VirtioIOMMUResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::UsbControlAttachedDevice as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::DevicesState as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::BatControlResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<hypervisor::HypervisorKind as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<swap::SwapStateTransition as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<swap::SwapMetrics as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<swap::SwapStatus as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<swap::SwapState as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_core::Rutabaga2DSnapshot as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_core::RutabagaSnapshot as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[u8; 16]> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[u32; 4]> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<u32, alloc::vec::Vec<u8>> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::collections::btree::map::BTreeMap<_, _> as serde::de::Deserialize>::deserialize::MapVisitor<u32, rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot> as serde::de::Expected>::fmt
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<u8> as serde::de::Expected>::fmt
Unexecuted instantiation: <serde::de::impls::BoolVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<u8 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<u32 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<u64 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_utils::Resource3DInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_utils::DeviceId as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_utils::VulkanInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Expected>::fmt
484
}
485
486
impl<'a> Expected for &'a str {
487
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
488
0
        formatter.write_str(self)
489
0
    }
490
}
491
492
impl<'a> Display for Expected + 'a {
493
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
494
0
        Expected::fmt(self, formatter)
495
0
    }
496
}
497
498
////////////////////////////////////////////////////////////////////////////////
499
500
/// A **data structure** that can be deserialized from any data format supported
501
/// by Serde.
502
///
503
/// Serde provides `Deserialize` implementations for many Rust primitive and
504
/// standard library types. The complete list is [here][de]. All of these can
505
/// be deserialized using Serde out of the box.
506
///
507
/// Additionally, Serde provides a procedural macro called `serde_derive` to
508
/// automatically generate `Deserialize` implementations for structs and enums
509
/// in your program. See the [derive section of the manual][derive] for how to
510
/// use this.
511
///
512
/// In rare cases it may be necessary to implement `Deserialize` manually for
513
/// some type in your program. See the [Implementing
514
/// `Deserialize`][impl-deserialize] section of the manual for more about this.
515
///
516
/// Third-party crates may provide `Deserialize` implementations for types that
517
/// they expose. For example the `linked-hash-map` crate provides a
518
/// `LinkedHashMap<K, V>` type that is deserializable by Serde because the crate
519
/// provides an implementation of `Deserialize` for it.
520
///
521
/// [de]: https://docs.serde.rs/serde/de/index.html
522
/// [derive]: https://serde.rs/derive.html
523
/// [impl-deserialize]: https://serde.rs/impl-deserialize.html
524
///
525
/// # Lifetime
526
///
527
/// The `'de` lifetime of this trait is the lifetime of data that may be
528
/// borrowed by `Self` when deserialized. See the page [Understanding
529
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
530
///
531
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
532
pub trait Deserialize<'de>: Sized {
533
    /// Deserialize this value from the given Serde deserializer.
534
    ///
535
    /// See the [Implementing `Deserialize`][impl-deserialize] section of the
536
    /// manual for more information about how to implement this method.
537
    ///
538
    /// [impl-deserialize]: https://serde.rs/impl-deserialize.html
539
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
540
    where
541
        D: Deserializer<'de>;
542
543
    /// Deserializes a value into `self` from the given Deserializer.
544
    ///
545
    /// The purpose of this method is to allow the deserializer to reuse
546
    /// resources and avoid copies. As such, if this method returns an error,
547
    /// `self` will be in an indeterminate state where some parts of the struct
548
    /// have been overwritten. Although whatever state that is will be
549
    /// memory-safe.
550
    ///
551
    /// This is generally useful when repeatedly deserializing values that
552
    /// are processed one at a time, where the value of `self` doesn't matter
553
    /// when the next deserialization occurs.
554
    ///
555
    /// If you manually implement this, your recursive deserializations should
556
    /// use `deserialize_in_place`.
557
    ///
558
    /// This method is stable and an official public API, but hidden from the
559
    /// documentation because it is almost never what newbies are looking for.
560
    /// Showing it in rustdoc would cause it to be featured more prominently
561
    /// than it deserves.
562
    #[doc(hidden)]
563
0
    fn deserialize_in_place<D>(deserializer: D, place: &mut Self) -> Result<(), D::Error>
564
0
    where
565
0
        D: Deserializer<'de>,
566
0
    {
567
        // Default implementation just delegates to `deserialize` impl.
568
0
        *place = Deserialize::deserialize(deserializer)?;
569
0
        Ok(())
570
0
    }
571
}
572
573
/// A data structure that can be deserialized without borrowing any data from
574
/// the deserializer.
575
///
576
/// This is primarily useful for trait bounds on functions. For example a
577
/// `from_str` function may be able to deserialize a data structure that borrows
578
/// from the input string, but a `from_reader` function may only deserialize
579
/// owned data.
580
///
581
/// ```edition2018
582
/// # use serde::de::{Deserialize, DeserializeOwned};
583
/// # use std::io::{Read, Result};
584
/// #
585
/// # trait Ignore {
586
/// fn from_str<'a, T>(s: &'a str) -> Result<T>
587
/// where
588
///     T: Deserialize<'a>;
589
///
590
/// fn from_reader<R, T>(rdr: R) -> Result<T>
591
/// where
592
///     R: Read,
593
///     T: DeserializeOwned;
594
/// # }
595
/// ```
596
///
597
/// # Lifetime
598
///
599
/// The relationship between `Deserialize` and `DeserializeOwned` in trait
600
/// bounds is explained in more detail on the page [Understanding deserializer
601
/// lifetimes].
602
///
603
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
604
pub trait DeserializeOwned: for<'de> Deserialize<'de> {}
605
impl<T> DeserializeOwned for T where T: for<'de> Deserialize<'de> {}
606
607
/// `DeserializeSeed` is the stateful form of the `Deserialize` trait. If you
608
/// ever find yourself looking for a way to pass data into a `Deserialize` impl,
609
/// this trait is the way to do it.
610
///
611
/// As one example of stateful deserialization consider deserializing a JSON
612
/// array into an existing buffer. Using the `Deserialize` trait we could
613
/// deserialize a JSON array into a `Vec<T>` but it would be a freshly allocated
614
/// `Vec<T>`; there is no way for `Deserialize` to reuse a previously allocated
615
/// buffer. Using `DeserializeSeed` instead makes this possible as in the
616
/// example code below.
617
///
618
/// The canonical API for stateless deserialization looks like this:
619
///
620
/// ```edition2018
621
/// # use serde::Deserialize;
622
/// #
623
/// # enum Error {}
624
/// #
625
/// fn func<'de, T: Deserialize<'de>>() -> Result<T, Error>
626
/// # {
627
/// #     unimplemented!()
628
/// # }
629
/// ```
630
///
631
/// Adjusting an API like this to support stateful deserialization is a matter
632
/// of accepting a seed as input:
633
///
634
/// ```edition2018
635
/// # use serde::de::DeserializeSeed;
636
/// #
637
/// # enum Error {}
638
/// #
639
/// fn func_seed<'de, T: DeserializeSeed<'de>>(seed: T) -> Result<T::Value, Error>
640
/// # {
641
/// #     let _ = seed;
642
/// #     unimplemented!()
643
/// # }
644
/// ```
645
///
646
/// In practice the majority of deserialization is stateless. An API expecting a
647
/// seed can be appeased by passing `std::marker::PhantomData` as a seed in the
648
/// case of stateless deserialization.
649
///
650
/// # Lifetime
651
///
652
/// The `'de` lifetime of this trait is the lifetime of data that may be
653
/// borrowed by `Self::Value` when deserialized. See the page [Understanding
654
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
655
///
656
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
657
///
658
/// # Example
659
///
660
/// Suppose we have JSON that looks like `[[1, 2], [3, 4, 5], [6]]` and we need
661
/// to deserialize it into a flat representation like `vec![1, 2, 3, 4, 5, 6]`.
662
/// Allocating a brand new `Vec<T>` for each subarray would be slow. Instead we
663
/// would like to allocate a single `Vec<T>` and then deserialize each subarray
664
/// into it. This requires stateful deserialization using the `DeserializeSeed`
665
/// trait.
666
///
667
/// ```edition2018
668
/// use std::fmt;
669
/// use std::marker::PhantomData;
670
///
671
/// use serde::de::{Deserialize, DeserializeSeed, Deserializer, SeqAccess, Visitor};
672
///
673
/// // A DeserializeSeed implementation that uses stateful deserialization to
674
/// // append array elements onto the end of an existing vector. The preexisting
675
/// // state ("seed") in this case is the Vec<T>. The `deserialize` method of
676
/// // `ExtendVec` will be traversing the inner arrays of the JSON input and
677
/// // appending each integer into the existing Vec.
678
/// struct ExtendVec<'a, T: 'a>(&'a mut Vec<T>);
679
///
680
/// impl<'de, 'a, T> DeserializeSeed<'de> for ExtendVec<'a, T>
681
/// where
682
///     T: Deserialize<'de>,
683
/// {
684
///     // The return type of the `deserialize` method. This implementation
685
///     // appends onto an existing vector but does not create any new data
686
///     // structure, so the return type is ().
687
///     type Value = ();
688
///
689
///     fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
690
///     where
691
///         D: Deserializer<'de>,
692
///     {
693
///         // Visitor implementation that will walk an inner array of the JSON
694
///         // input.
695
///         struct ExtendVecVisitor<'a, T: 'a>(&'a mut Vec<T>);
696
///
697
///         impl<'de, 'a, T> Visitor<'de> for ExtendVecVisitor<'a, T>
698
///         where
699
///             T: Deserialize<'de>,
700
///         {
701
///             type Value = ();
702
///
703
///             fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
704
///                 write!(formatter, "an array of integers")
705
///             }
706
///
707
///             fn visit_seq<A>(self, mut seq: A) -> Result<(), A::Error>
708
///             where
709
///                 A: SeqAccess<'de>,
710
///             {
711
///                 // Decrease the number of reallocations if there are many elements
712
///                 if let Some(size_hint) = seq.size_hint() {
713
///                    self.0.reserve(size_hint);
714
///                 }
715
///
716
///                 // Visit each element in the inner array and push it onto
717
///                 // the existing vector.
718
///                 while let Some(elem) = seq.next_element()? {
719
///                     self.0.push(elem);
720
///                 }
721
///                 Ok(())
722
///             }
723
///         }
724
///
725
///         deserializer.deserialize_seq(ExtendVecVisitor(self.0))
726
///     }
727
/// }
728
///
729
/// // Visitor implementation that will walk the outer array of the JSON input.
730
/// struct FlattenedVecVisitor<T>(PhantomData<T>);
731
///
732
/// impl<'de, T> Visitor<'de> for FlattenedVecVisitor<T>
733
/// where
734
///     T: Deserialize<'de>,
735
/// {
736
///     // This Visitor constructs a single Vec<T> to hold the flattened
737
///     // contents of the inner arrays.
738
///     type Value = Vec<T>;
739
///
740
///     fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
741
///         write!(formatter, "an array of arrays")
742
///     }
743
///
744
///     fn visit_seq<A>(self, mut seq: A) -> Result<Vec<T>, A::Error>
745
///     where
746
///         A: SeqAccess<'de>,
747
///     {
748
///         // Create a single Vec to hold the flattened contents.
749
///         let mut vec = Vec::new();
750
///
751
///         // Each iteration through this loop is one inner array.
752
///         while let Some(()) = seq.next_element_seed(ExtendVec(&mut vec))? {
753
///             // Nothing to do; inner array has been appended into `vec`.
754
///         }
755
///
756
///         // Return the finished vec.
757
///         Ok(vec)
758
///     }
759
/// }
760
///
761
/// # fn example<'de, D>(deserializer: D) -> Result<(), D::Error>
762
/// # where
763
/// #     D: Deserializer<'de>,
764
/// # {
765
/// let visitor = FlattenedVecVisitor(PhantomData);
766
/// let flattened: Vec<u64> = deserializer.deserialize_seq(visitor)?;
767
/// #     Ok(())
768
/// # }
769
/// ```
770
pub trait DeserializeSeed<'de>: Sized {
771
    /// The type produced by using this seed.
772
    type Value;
773
774
    /// Equivalent to the more common `Deserialize::deserialize` method, except
775
    /// with some initial piece of data (the seed) passed in.
776
    fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
777
    where
778
        D: Deserializer<'de>;
779
}
780
781
impl<'de, T> DeserializeSeed<'de> for PhantomData<T>
782
where
783
    T: Deserialize<'de>,
784
{
785
    type Value = T;
786
787
    #[inline]
788
0
    fn deserialize<D>(self, deserializer: D) -> Result<T, D::Error>
789
0
    where
790
0
        D: Deserializer<'de>,
791
0
    {
792
0
        T::deserialize(deserializer)
793
0
    }
Unexecuted instantiation: <core::marker::PhantomData<serde_json::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<_> as serde::de::DeserializeSeed>::deserialize::<_>
Unexecuted instantiation: <core::marker::PhantomData<[core::option::Option<devices::pci::pci_configuration::PciBarConfiguration>; 7]> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<[hypervisor::x86_64::PitChannelState; 3]> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<[devices::virtio::resource_bridge::PlaneInfo; 4]> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<[bool; 7]> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<[u8; 32]> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<[u8; 8]> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<[u8; 8]> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<[u64; 4]> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<[u16; 3]>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<alloc::vec::Vec<(usize, snapshot::any_snapshot::AnySnapshot)>>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<alloc::vec::Vec<u16>>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<crypto_generic::CryptKey>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<core::time::Duration>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<alloc::string::String>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<alloc::string::String>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<resources::pci_address::PciAddress>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<cros_async::executor::ExecutorKind>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<devices::pci::pci_configuration::PciBarConfiguration>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<devices::virtio::interrupt::InterruptSnapshot>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<devices::irqchip::ioapic::OutEventSnapshot>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<(usize, usize)>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<usize>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<core::result::Result<devices::proxy::SnapshotFile, alloc::string::String>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<core::result::Result<(), alloc::string::String>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<[u64; 4]>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<core::option::Option<devices::irqchip::ioapic::OutEventSnapshot>>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<core::option::Option<u32>>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<hypervisor::MPState>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<hypervisor::IrqRoute>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<devices::bus::BusRange>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<devices::vmwdt::VmwdtPerCpuRestore>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<snapshot::any_snapshot::AnySnapshot>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<hypervisor::x86_64::LapicState>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<hypervisor::x86_64::IoapicRedirectionTableEntry>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<resources::pci_address::PciAddress>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<devices::pci::msix::MsixTableEntry>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<devices::virtio::input::InputConfigFileEvent>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<devices::virtio::input::InputConfigFileAbsInfo>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<devices::virtio::iommu::memory_mapper::MemRegion>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<devices::virtio::vhost::worker::VringBase>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<devices::virtio::console::port::ConsolePortSnapshot>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<(devices::bus::BusRange, devices::bus::BusType)>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<(u64, u64)>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<bool>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<u8>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<u8>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<u64>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::num::wrapping::Wrapping<u16>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::collections::vec_deque::VecDeque<u8>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<alloc::string::String, u16>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<crypto_generic::SecureByteVec> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<snapshot::SnapshotReader> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<snapshot::SnapshotWriter> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::IrqSourceChip> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::MPState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::IrqRoute> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::IrqSource> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::VirtioIOMMUVfioCommand> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::BatHealth> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::BatStatus> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<serde::de::value::U8Deserializer<ciborium::de::error::Error<std::io::error::Error>>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<devices::serial_device::SerialType> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<devices::serial_device::SerialHardware> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<devices::bat::GoldfishBatteryState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::bat::BatConfig> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::bus::BusType> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::bus::BusRange> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::pci::CrosvmDeviceId> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::pci::PciId> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::acpi::GpeResourceSerializable> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::acpi::Pm1ResourceSerializable> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::proxy::SnapshotFile> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::vmwdt::VmwdtPerCpuRestore> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::pflash::State> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::irqchip::IrqEventSource> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::irqchip::DeviceId> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<serde::de::value::U8Deserializer<ciborium::de::error::Error<std::io::error::Error>>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>>>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<ciborium::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<vm_memory::guest_address::GuestAddress> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<vm_memory::guest_address::GuestAddress> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>>>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<snapshot::any_snapshot::AnySnapshot> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<snapshot::any_snapshot::AnySnapshot> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::LapicState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::PitRWState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::IoapicState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::PicInitState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::PitChannelState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::IoapicRedirectionTableEntry> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::PicState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::PitState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::x86_64::PitRWMode> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<resources::pci_address::PciAddress> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<resources::pci_address::PciAddress> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<std::path::PathBuf> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<base::mmap::Protection> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<base::event::Event> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::pci::pci_configuration::PciBarRegionType> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::pci::pci_configuration::PciBarPrefetchable> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::pci::msix::MsixTableEntry> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::pci::stub::PciClassParameters> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<devices::pci::coiommu::CoIommuUnpinPolicy> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::resource_bridge::BufferInfo> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::resource_bridge::ResourceInfo> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::resource_bridge::PlaneInfo> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::virtio_pci_common_config::VirtioPciCommonConfig> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::input::InputConfigFileEvent> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::input::InputConfigFileAbsInfo> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::device_constants::video::VideoBackendType> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::fs::config::CachePolicy> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::iommu::memory_mapper::MemRegion> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::vhost::worker::VringBase> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<devices::virtio::console::port::ConsolePortSnapshot> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<crypto_generic::SecureByteVec as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<crypto_generic::CryptKey as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::UnpinRequest as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<snapshot::SnapshotReader as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<snapshot::SnapshotWriter as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::IrqSourceChip as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::IrqSourceChip as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::IrqRoute as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::MPState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::MPState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::VirtioIOMMURequest as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::BatStatus as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::BatHealth as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::BatControlCommand as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::serial_device::SerialType as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::serial_device::SerialHardware as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::serial_device::SerialParameters as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::bat::GoldfishBatteryState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::bat::GoldfishBatterySnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::bat::BatConfig as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::bat::BatConfig as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::bus::BusType as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::bus::BusRange as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::CrosvmDeviceId as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::CrosvmDeviceId as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::PciId as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::acpi::Pm1ResourceSerializable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::acpi::GpeResourceSerializable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::acpi::ACPIPMResrourceSerializable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pl030::Pl030Snapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::proxy::SnapshotFile as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::vmwdt::VmwdtRestore as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::vmwdt::VmwdtPerCpuRestore as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::fw_cfg::FwCfgParameters as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pflash::State as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pflash::State as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::serial::SerialSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::irqchip::IrqEventSource as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::irqchip::DeviceId as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::irqchip::DeviceId as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::IoapicRedirectionTableEntry as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::IoapicState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PicInitState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PicInitState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PicState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::LapicState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PitState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PitRWMode as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PitRWMode as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PitRWState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PitRWState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::x86_64::PitChannelState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<base::mmap::Protection as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_configuration::PciConfigurationSerialized as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_configuration::PciBarRegionType as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_configuration::PciBarRegionType as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_configuration::PciBarPrefetchable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_configuration::PciBarPrefetchable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_configuration::PciBarConfiguration as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::msix::MsixConfigSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::msix::MsixTableEntry as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::stub::StubPciParameters as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::coiommu::CoIommuUnpinPolicy as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_root::PciRootSerializable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_root::PciConfigIoSerializable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_root::PciConfigMmioSerializable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::pci::pci_root::PciVirtualConfigMmioSerializable as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::resource_bridge::PlaneInfo as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::resource_bridge::BufferInfo as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::resource_bridge::ResourceResponse as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::virtio_pci_device::VirtioPciDeviceSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::virtio_pci_common_config::VirtioPciCommonConfig as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::pmem::PmemSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::scsi::ScsiOption as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::input::InputConfigFile as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::input::InputConfigFileEvent as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::input::InputConfigFileAbsInfo as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::queue::QueueConfigSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::interrupt::InterruptSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::irqchip::ioapic::OutEventSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::irqchip::ioapic::IoapicSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::irqchip::x86_64::IrqChipSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::sys::linux::VmMemoryMappingResponse as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::device_constants::video::VideoBackendType as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::device_constants::video::VideoDeviceConfig as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::fs::config::CachePolicy as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::iommu::memory_mapper::MemRegion as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::iommu::ipc_memory_mapper::IommuResponse as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::queue::split_queue::SplitQueueSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::vhost::control_socket::VhostDevRequest as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::vhost::vsock::VsockSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::vhost::worker::VringBase as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::console::port::ConsolePortSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::console::device::ConsoleSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::irqchip::kvm::x86_64::KvmKernelIrqChipSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::irqchip::kvm::x86_64::KvmSplitIrqChipSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::vsock::sys::linux::VsockConfig as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::vhost::user::device::block::BlockBackendSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<devices::virtio::vhost::user::device::handler::DeviceRequestHandlerSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::cmos::Cmos as devices::suspendable::Suspendable>::restore::CmosIndex as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::bat::BatConfig as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::proxy::SnapshotFile as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::proxy::SnapshotFile as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_seq::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<hypervisor::x86_64::IoapicState as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<hypervisor::x86_64::LapicState as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::pci::pci_configuration::PciConfigurationSerialized as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::pci::pci_configuration::PciConfigurationSerialized as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::resource_bridge::BufferInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::resource_bridge::BufferInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_seq::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<<devices::cmos::Cmos as devices::suspendable::Suspendable>::restore::CmosIndex as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_seq::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_seq::__DeserializeWith> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<core::result::Result<_, _> as serde::de::Deserialize>::deserialize::Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<core::time::Duration as serde::de::Deserialize>::deserialize::Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<(devices::bus::BusRange, devices::bus::BusType)> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<(usize, snapshot::any_snapshot::AnySnapshot)> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<(u64, u64)> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<bool> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<u8> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<usize> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<usize> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<usize> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<u32> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<u32> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<u16> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<u16> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::StrRead>>
Unexecuted instantiation: <core::marker::PhantomData<u16> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<()> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<i64> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>>>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<std::path::PathBuf>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<std::path::PathBuf> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<jail::config::JailConfig as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<bool> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<[vm_control::UsbControlAttachedDevice; 16]> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<usize, (u32, u32)>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<swap::SwapStatus> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<swap::SwapMetrics> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<swap::SwapStateTransition> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<swap::SwapState> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::HypervisorKind> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::DevicesState> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::BatControlResult> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::UsbControlResult> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::VmMemoryRegionId> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::VirtioIOMMUVfioResult> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::VmMemoryResponseError> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<vm_control::UsbControlAttachedDevice> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<base::descriptor::SafeDescriptor> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<base::errno::Error> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<swap::SwapStateTransition as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<swap::SwapMetrics as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<swap::SwapStatus as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<swap::SwapState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::HypervisorKind as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::DiskControlResult as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::VirtioIOMMUVfioResult as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::VirtioIOMMUResponse as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::UsbControlAttachedDevice as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::DevicesState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::BatControlResult as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<<<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<(u32, u32)> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<u8> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<usize> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<u32> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<u16> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::SliceRead>>
Unexecuted instantiation: <core::marker::PhantomData<[u8; 16]> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<[u32; 4]> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<rutabaga_gfx::rutabaga_core::Rutabaga2DSnapshot>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<rutabaga_gfx::rutabaga_utils::VulkanInfo>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<rutabaga_gfx::rutabaga_utils::Resource3DInfo>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<u32>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::vec::Vec<u8>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<u32, alloc::vec::Vec<u8>>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::collections::btree::map::BTreeMap<u32, rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot>> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<serde_json::value::Value> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<alloc::string::String> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<rutabaga_gfx::rutabaga_utils::DeviceId> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<<rutabaga_gfx::rutabaga_core::Rutabaga2DSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<<rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<<rutabaga_gfx::rutabaga_core::RutabagaSnapshot as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<<rutabaga_gfx::rutabaga_utils::Resource3DInfo as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<<rutabaga_gfx::rutabaga_utils::DeviceId as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<<rutabaga_gfx::rutabaga_utils::VulkanInfo as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<bool> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<u8> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<u32> as serde::de::DeserializeSeed>::deserialize::<serde_json::de::MapKey<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<u32> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut serde_json::de::Deserializer<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<bool>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<u8>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<u32>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<core::option::Option<u64>> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<serde::de::ignored_any::IgnoredAny> as serde::de::DeserializeSeed>::deserialize::<&mut ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::kvm::x86_64::VcpuNmiState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::kvm::x86_64::VcpuSmiState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::kvm::x86_64::VcpuExceptionState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::kvm::x86_64::VcpuInterruptState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<hypervisor::kvm::x86_64::VcpuTripleFaultState> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::kvm::x86_64::VcpuExceptionState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::kvm::x86_64::VcpuInterruptState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::kvm::x86_64::VcpuNmiState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::kvm::x86_64::VcpuSmiState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::kvm::x86_64::VcpuTripleFaultState as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<<hypervisor::kvm::x86_64::VcpuEvents as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<bool> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<u8> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<u32> as serde::de::DeserializeSeed>::deserialize::<ciborium::value::de::Deserializer<&ciborium::value::Value>>
Unexecuted instantiation: <core::marker::PhantomData<std::path::PathBuf> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<vm_memory::guest_memory::FileBackedMappingParameters as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<bool> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<u64> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
Unexecuted instantiation: <core::marker::PhantomData<<cros_async::sys::linux::executor::ExecutorKindSys as serde::de::Deserialize>::deserialize::__Field> as serde::de::DeserializeSeed>::deserialize::<&mut serde_keyvalue::key_values::KeyValueDeserializer>
794
}
795
796
////////////////////////////////////////////////////////////////////////////////
797
798
/// A **data format** that can deserialize any data structure supported by
799
/// Serde.
800
///
801
/// The role of this trait is to define the deserialization half of the [Serde
802
/// data model], which is a way to categorize every Rust data type into one of
803
/// 29 possible types. Each method of the `Deserializer` trait corresponds to one
804
/// of the types of the data model.
805
///
806
/// Implementations of `Deserialize` map themselves into this data model by
807
/// passing to the `Deserializer` a `Visitor` implementation that can receive
808
/// these various types.
809
///
810
/// The types that make up the Serde data model are:
811
///
812
///  - **14 primitive types**
813
///    - bool
814
///    - i8, i16, i32, i64, i128
815
///    - u8, u16, u32, u64, u128
816
///    - f32, f64
817
///    - char
818
///  - **string**
819
///    - UTF-8 bytes with a length and no null terminator.
820
///    - When serializing, all strings are handled equally. When deserializing,
821
///      there are three flavors of strings: transient, owned, and borrowed.
822
///  - **byte array** - \[u8\]
823
///    - Similar to strings, during deserialization byte arrays can be
824
///      transient, owned, or borrowed.
825
///  - **option**
826
///    - Either none or some value.
827
///  - **unit**
828
///    - The type of `()` in Rust. It represents an anonymous value containing
829
///      no data.
830
///  - **unit_struct**
831
///    - For example `struct Unit` or `PhantomData<T>`. It represents a named
832
///      value containing no data.
833
///  - **unit_variant**
834
///    - For example the `E::A` and `E::B` in `enum E { A, B }`.
835
///  - **newtype_struct**
836
///    - For example `struct Millimeters(u8)`.
837
///  - **newtype_variant**
838
///    - For example the `E::N` in `enum E { N(u8) }`.
839
///  - **seq**
840
///    - A variably sized heterogeneous sequence of values, for example `Vec<T>`
841
///      or `HashSet<T>`. When serializing, the length may or may not be known
842
///      before iterating through all the data. When deserializing, the length
843
///      is determined by looking at the serialized data.
844
///  - **tuple**
845
///    - A statically sized heterogeneous sequence of values for which the
846
///      length will be known at deserialization time without looking at the
847
///      serialized data, for example `(u8,)` or `(String, u64, Vec<T>)` or
848
///      `[u64; 10]`.
849
///  - **tuple_struct**
850
///    - A named tuple, for example `struct Rgb(u8, u8, u8)`.
851
///  - **tuple_variant**
852
///    - For example the `E::T` in `enum E { T(u8, u8) }`.
853
///  - **map**
854
///    - A heterogeneous key-value pairing, for example `BTreeMap<K, V>`.
855
///  - **struct**
856
///    - A heterogeneous key-value pairing in which the keys are strings and
857
///      will be known at deserialization time without looking at the serialized
858
///      data, for example `struct S { r: u8, g: u8, b: u8 }`.
859
///  - **struct_variant**
860
///    - For example the `E::S` in `enum E { S { r: u8, g: u8, b: u8 } }`.
861
///
862
/// The `Deserializer` trait supports two entry point styles which enables
863
/// different kinds of deserialization.
864
///
865
/// 1. The `deserialize` method. Self-describing data formats like JSON are able
866
///    to look at the serialized data and tell what it represents. For example
867
///    the JSON deserializer may see an opening curly brace (`{`) and know that
868
///    it is seeing a map. If the data format supports
869
///    `Deserializer::deserialize_any`, it will drive the Visitor using whatever
870
///    type it sees in the input. JSON uses this approach when deserializing
871
///    `serde_json::Value` which is an enum that can represent any JSON
872
///    document. Without knowing what is in a JSON document, we can deserialize
873
///    it to `serde_json::Value` by going through
874
///    `Deserializer::deserialize_any`.
875
///
876
/// 2. The various `deserialize_*` methods. Non-self-describing formats like
877
///    Bincode need to be told what is in the input in order to deserialize it.
878
///    The `deserialize_*` methods are hints to the deserializer for how to
879
///    interpret the next piece of input. Non-self-describing formats are not
880
///    able to deserialize something like `serde_json::Value` which relies on
881
///    `Deserializer::deserialize_any`.
882
///
883
/// When implementing `Deserialize`, you should avoid relying on
884
/// `Deserializer::deserialize_any` unless you need to be told by the
885
/// Deserializer what type is in the input. Know that relying on
886
/// `Deserializer::deserialize_any` means your data type will be able to
887
/// deserialize from self-describing formats only, ruling out Bincode and many
888
/// others.
889
///
890
/// [Serde data model]: https://serde.rs/data-model.html
891
///
892
/// # Lifetime
893
///
894
/// The `'de` lifetime of this trait is the lifetime of data that may be
895
/// borrowed from the input when deserializing. See the page [Understanding
896
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
897
///
898
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
899
///
900
/// # Example implementation
901
///
902
/// The [example data format] presented on the website contains example code for
903
/// a basic JSON `Deserializer`.
904
///
905
/// [example data format]: https://serde.rs/data-format.html
906
pub trait Deserializer<'de>: Sized {
907
    /// The error type that can be returned if some error occurs during
908
    /// deserialization.
909
    type Error: Error;
910
911
    /// Require the `Deserializer` to figure out how to drive the visitor based
912
    /// on what data type is in the input.
913
    ///
914
    /// When implementing `Deserialize`, you should avoid relying on
915
    /// `Deserializer::deserialize_any` unless you need to be told by the
916
    /// Deserializer what type is in the input. Know that relying on
917
    /// `Deserializer::deserialize_any` means your data type will be able to
918
    /// deserialize from self-describing formats only, ruling out Bincode and
919
    /// many others.
920
    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
921
    where
922
        V: Visitor<'de>;
923
924
    /// Hint that the `Deserialize` type is expecting a `bool` value.
925
    fn deserialize_bool<V>(self, visitor: V) -> Result<V::Value, Self::Error>
926
    where
927
        V: Visitor<'de>;
928
929
    /// Hint that the `Deserialize` type is expecting an `i8` value.
930
    fn deserialize_i8<V>(self, visitor: V) -> Result<V::Value, Self::Error>
931
    where
932
        V: Visitor<'de>;
933
934
    /// Hint that the `Deserialize` type is expecting an `i16` value.
935
    fn deserialize_i16<V>(self, visitor: V) -> Result<V::Value, Self::Error>
936
    where
937
        V: Visitor<'de>;
938
939
    /// Hint that the `Deserialize` type is expecting an `i32` value.
940
    fn deserialize_i32<V>(self, visitor: V) -> Result<V::Value, Self::Error>
941
    where
942
        V: Visitor<'de>;
943
944
    /// Hint that the `Deserialize` type is expecting an `i64` value.
945
    fn deserialize_i64<V>(self, visitor: V) -> Result<V::Value, Self::Error>
946
    where
947
        V: Visitor<'de>;
948
949
    serde_if_integer128! {
950
        /// Hint that the `Deserialize` type is expecting an `i128` value.
951
        ///
952
        /// This method is available only on Rust compiler versions >=1.26. The
953
        /// default behavior unconditionally returns an error.
954
0
        fn deserialize_i128<V>(self, visitor: V) -> Result<V::Value, Self::Error>
955
0
        where
956
0
            V: Visitor<'de>
957
0
        {
958
0
            let _ = visitor;
959
0
            Err(Error::custom("i128 is not supported"))
960
0
        }
961
    }
962
963
    /// Hint that the `Deserialize` type is expecting a `u8` value.
964
    fn deserialize_u8<V>(self, visitor: V) -> Result<V::Value, Self::Error>
965
    where
966
        V: Visitor<'de>;
967
968
    /// Hint that the `Deserialize` type is expecting a `u16` value.
969
    fn deserialize_u16<V>(self, visitor: V) -> Result<V::Value, Self::Error>
970
    where
971
        V: Visitor<'de>;
972
973
    /// Hint that the `Deserialize` type is expecting a `u32` value.
974
    fn deserialize_u32<V>(self, visitor: V) -> Result<V::Value, Self::Error>
975
    where
976
        V: Visitor<'de>;
977
978
    /// Hint that the `Deserialize` type is expecting a `u64` value.
979
    fn deserialize_u64<V>(self, visitor: V) -> Result<V::Value, Self::Error>
980
    where
981
        V: Visitor<'de>;
982
983
    serde_if_integer128! {
984
        /// Hint that the `Deserialize` type is expecting an `u128` value.
985
        ///
986
        /// This method is available only on Rust compiler versions >=1.26. The
987
        /// default behavior unconditionally returns an error.
988
0
        fn deserialize_u128<V>(self, visitor: V) -> Result<V::Value, Self::Error>
989
0
        where
990
0
            V: Visitor<'de>
991
0
        {
992
0
            let _ = visitor;
993
0
            Err(Error::custom("u128 is not supported"))
994
0
        }
995
    }
996
997
    /// Hint that the `Deserialize` type is expecting a `f32` value.
998
    fn deserialize_f32<V>(self, visitor: V) -> Result<V::Value, Self::Error>
999
    where
1000
        V: Visitor<'de>;
1001
1002
    /// Hint that the `Deserialize` type is expecting a `f64` value.
1003
    fn deserialize_f64<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1004
    where
1005
        V: Visitor<'de>;
1006
1007
    /// Hint that the `Deserialize` type is expecting a `char` value.
1008
    fn deserialize_char<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1009
    where
1010
        V: Visitor<'de>;
1011
1012
    /// Hint that the `Deserialize` type is expecting a string value and does
1013
    /// not benefit from taking ownership of buffered data owned by the
1014
    /// `Deserializer`.
1015
    ///
1016
    /// If the `Visitor` would benefit from taking ownership of `String` data,
1017
    /// indicate this to the `Deserializer` by using `deserialize_string`
1018
    /// instead.
1019
    fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1020
    where
1021
        V: Visitor<'de>;
1022
1023
    /// Hint that the `Deserialize` type is expecting a string value and would
1024
    /// benefit from taking ownership of buffered data owned by the
1025
    /// `Deserializer`.
1026
    ///
1027
    /// If the `Visitor` would not benefit from taking ownership of `String`
1028
    /// data, indicate that to the `Deserializer` by using `deserialize_str`
1029
    /// instead.
1030
    fn deserialize_string<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1031
    where
1032
        V: Visitor<'de>;
1033
1034
    /// Hint that the `Deserialize` type is expecting a byte array and does not
1035
    /// benefit from taking ownership of buffered data owned by the
1036
    /// `Deserializer`.
1037
    ///
1038
    /// If the `Visitor` would benefit from taking ownership of `Vec<u8>` data,
1039
    /// indicate this to the `Deserializer` by using `deserialize_byte_buf`
1040
    /// instead.
1041
    fn deserialize_bytes<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1042
    where
1043
        V: Visitor<'de>;
1044
1045
    /// Hint that the `Deserialize` type is expecting a byte array and would
1046
    /// benefit from taking ownership of buffered data owned by the
1047
    /// `Deserializer`.
1048
    ///
1049
    /// If the `Visitor` would not benefit from taking ownership of `Vec<u8>`
1050
    /// data, indicate that to the `Deserializer` by using `deserialize_bytes`
1051
    /// instead.
1052
    fn deserialize_byte_buf<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1053
    where
1054
        V: Visitor<'de>;
1055
1056
    /// Hint that the `Deserialize` type is expecting an optional value.
1057
    ///
1058
    /// This allows deserializers that encode an optional value as a nullable
1059
    /// value to convert the null value into `None` and a regular value into
1060
    /// `Some(value)`.
1061
    fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1062
    where
1063
        V: Visitor<'de>;
1064
1065
    /// Hint that the `Deserialize` type is expecting a unit value.
1066
    fn deserialize_unit<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1067
    where
1068
        V: Visitor<'de>;
1069
1070
    /// Hint that the `Deserialize` type is expecting a unit struct with a
1071
    /// particular name.
1072
    fn deserialize_unit_struct<V>(
1073
        self,
1074
        name: &'static str,
1075
        visitor: V,
1076
    ) -> Result<V::Value, Self::Error>
1077
    where
1078
        V: Visitor<'de>;
1079
1080
    /// Hint that the `Deserialize` type is expecting a newtype struct with a
1081
    /// particular name.
1082
    fn deserialize_newtype_struct<V>(
1083
        self,
1084
        name: &'static str,
1085
        visitor: V,
1086
    ) -> Result<V::Value, Self::Error>
1087
    where
1088
        V: Visitor<'de>;
1089
1090
    /// Hint that the `Deserialize` type is expecting a sequence of values.
1091
    fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1092
    where
1093
        V: Visitor<'de>;
1094
1095
    /// Hint that the `Deserialize` type is expecting a sequence of values and
1096
    /// knows how many values there are without looking at the serialized data.
1097
    fn deserialize_tuple<V>(self, len: usize, visitor: V) -> Result<V::Value, Self::Error>
1098
    where
1099
        V: Visitor<'de>;
1100
1101
    /// Hint that the `Deserialize` type is expecting a tuple struct with a
1102
    /// particular name and number of fields.
1103
    fn deserialize_tuple_struct<V>(
1104
        self,
1105
        name: &'static str,
1106
        len: usize,
1107
        visitor: V,
1108
    ) -> Result<V::Value, Self::Error>
1109
    where
1110
        V: Visitor<'de>;
1111
1112
    /// Hint that the `Deserialize` type is expecting a map of key-value pairs.
1113
    fn deserialize_map<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1114
    where
1115
        V: Visitor<'de>;
1116
1117
    /// Hint that the `Deserialize` type is expecting a struct with a particular
1118
    /// name and fields.
1119
    fn deserialize_struct<V>(
1120
        self,
1121
        name: &'static str,
1122
        fields: &'static [&'static str],
1123
        visitor: V,
1124
    ) -> Result<V::Value, Self::Error>
1125
    where
1126
        V: Visitor<'de>;
1127
1128
    /// Hint that the `Deserialize` type is expecting an enum value with a
1129
    /// particular name and possible variants.
1130
    fn deserialize_enum<V>(
1131
        self,
1132
        name: &'static str,
1133
        variants: &'static [&'static str],
1134
        visitor: V,
1135
    ) -> Result<V::Value, Self::Error>
1136
    where
1137
        V: Visitor<'de>;
1138
1139
    /// Hint that the `Deserialize` type is expecting the name of a struct
1140
    /// field or the discriminant of an enum variant.
1141
    fn deserialize_identifier<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1142
    where
1143
        V: Visitor<'de>;
1144
1145
    /// Hint that the `Deserialize` type needs to deserialize a value whose type
1146
    /// doesn't matter because it is ignored.
1147
    ///
1148
    /// Deserializers for non-self-describing formats may not support this mode.
1149
    fn deserialize_ignored_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
1150
    where
1151
        V: Visitor<'de>;
1152
1153
    /// Determine whether `Deserialize` implementations should expect to
1154
    /// deserialize their human-readable form.
1155
    ///
1156
    /// Some types have a human-readable form that may be somewhat expensive to
1157
    /// construct, as well as a binary form that is compact and efficient.
1158
    /// Generally text-based formats like JSON and YAML will prefer to use the
1159
    /// human-readable one and binary formats like Bincode will prefer the
1160
    /// compact one.
1161
    ///
1162
    /// ```edition2018
1163
    /// # use std::ops::Add;
1164
    /// # use std::str::FromStr;
1165
    /// #
1166
    /// # struct Timestamp;
1167
    /// #
1168
    /// # impl Timestamp {
1169
    /// #     const EPOCH: Timestamp = Timestamp;
1170
    /// # }
1171
    /// #
1172
    /// # impl FromStr for Timestamp {
1173
    /// #     type Err = String;
1174
    /// #     fn from_str(_: &str) -> Result<Self, Self::Err> {
1175
    /// #         unimplemented!()
1176
    /// #     }
1177
    /// # }
1178
    /// #
1179
    /// # struct Duration;
1180
    /// #
1181
    /// # impl Duration {
1182
    /// #     fn seconds(_: u64) -> Self { unimplemented!() }
1183
    /// # }
1184
    /// #
1185
    /// # impl Add<Duration> for Timestamp {
1186
    /// #     type Output = Timestamp;
1187
    /// #     fn add(self, _: Duration) -> Self::Output {
1188
    /// #         unimplemented!()
1189
    /// #     }
1190
    /// # }
1191
    /// #
1192
    /// use serde::de::{self, Deserialize, Deserializer};
1193
    ///
1194
    /// impl<'de> Deserialize<'de> for Timestamp {
1195
    ///     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1196
    ///     where
1197
    ///         D: Deserializer<'de>,
1198
    ///     {
1199
    ///         if deserializer.is_human_readable() {
1200
    ///             // Deserialize from a human-readable string like "2015-05-15T17:01:00Z".
1201
    ///             let s = String::deserialize(deserializer)?;
1202
    ///             Timestamp::from_str(&s).map_err(de::Error::custom)
1203
    ///         } else {
1204
    ///             // Deserialize from a compact binary representation, seconds since
1205
    ///             // the Unix epoch.
1206
    ///             let n = u64::deserialize(deserializer)?;
1207
    ///             Ok(Timestamp::EPOCH + Duration::seconds(n))
1208
    ///         }
1209
    ///     }
1210
    /// }
1211
    /// ```
1212
    ///
1213
    /// The default implementation of this method returns `true`. Data formats
1214
    /// may override this to `false` to request a compact form for types that
1215
    /// support one. Note that modifying this method to change a format from
1216
    /// human-readable to compact or vice versa should be regarded as a breaking
1217
    /// change, as a value serialized in human-readable mode is not required to
1218
    /// deserialize from the same data in compact mode.
1219
    #[inline]
1220
0
    fn is_human_readable(&self) -> bool {
1221
0
        true
1222
0
    }
1223
1224
    // Not public API.
1225
    #[cfg(all(not(no_serde_derive), any(feature = "std", feature = "alloc")))]
1226
    #[doc(hidden)]
1227
0
    fn __deserialize_content<V>(
1228
0
        self,
1229
0
        _: ::actually_private::T,
1230
0
        visitor: V,
1231
0
    ) -> Result<::private::de::Content<'de>, Self::Error>
1232
0
    where
1233
0
        V: Visitor<'de, Value = ::private::de::Content<'de>>,
1234
0
    {
1235
0
        self.deserialize_any(visitor)
1236
0
    }
1237
}
1238
1239
////////////////////////////////////////////////////////////////////////////////
1240
1241
/// This trait represents a visitor that walks through a deserializer.
1242
///
1243
/// # Lifetime
1244
///
1245
/// The `'de` lifetime of this trait is the requirement for lifetime of data
1246
/// that may be borrowed by `Self::Value`. See the page [Understanding
1247
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
1248
///
1249
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
1250
///
1251
/// # Example
1252
///
1253
/// ```edition2018
1254
/// # use std::fmt;
1255
/// #
1256
/// # use serde::de::{self, Unexpected, Visitor};
1257
/// #
1258
/// /// A visitor that deserializes a long string - a string containing at least
1259
/// /// some minimum number of bytes.
1260
/// struct LongString {
1261
///     min: usize,
1262
/// }
1263
///
1264
/// impl<'de> Visitor<'de> for LongString {
1265
///     type Value = String;
1266
///
1267
///     fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1268
///         write!(formatter, "a string containing at least {} bytes", self.min)
1269
///     }
1270
///
1271
///     fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
1272
///     where
1273
///         E: de::Error,
1274
///     {
1275
///         if s.len() >= self.min {
1276
///             Ok(s.to_owned())
1277
///         } else {
1278
///             Err(de::Error::invalid_value(Unexpected::Str(s), &self))
1279
///         }
1280
///     }
1281
/// }
1282
/// ```
1283
pub trait Visitor<'de>: Sized {
1284
    /// The value produced by this visitor.
1285
    type Value;
1286
1287
    /// Format a message stating what data this Visitor expects to receive.
1288
    ///
1289
    /// This is used in error messages. The message should complete the sentence
1290
    /// "This Visitor expects to receive ...", for example the message could be
1291
    /// "an integer between 0 and 64". The message should not be capitalized and
1292
    /// should not end with a period.
1293
    ///
1294
    /// ```edition2018
1295
    /// # use std::fmt;
1296
    /// #
1297
    /// # struct S {
1298
    /// #     max: usize,
1299
    /// # }
1300
    /// #
1301
    /// # impl<'de> serde::de::Visitor<'de> for S {
1302
    /// #     type Value = ();
1303
    /// #
1304
    /// fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1305
    ///     write!(formatter, "an integer between 0 and {}", self.max)
1306
    /// }
1307
    /// # }
1308
    /// ```
1309
    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result;
1310
1311
    /// The input contains a boolean.
1312
    ///
1313
    /// The default implementation fails with a type error.
1314
0
    fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
1315
0
    where
1316
0
        E: Error,
1317
0
    {
1318
0
        Err(Error::invalid_type(Unexpected::Bool(v), &self))
1319
0
    }
1320
1321
    /// The input contains an `i8`.
1322
    ///
1323
    /// The default implementation forwards to [`visit_i64`].
1324
    ///
1325
    /// [`visit_i64`]: #method.visit_i64
1326
0
    fn visit_i8<E>(self, v: i8) -> Result<Self::Value, E>
1327
0
    where
1328
0
        E: Error,
1329
0
    {
1330
0
        self.visit_i64(v as i64)
1331
0
    }
1332
1333
    /// The input contains an `i16`.
1334
    ///
1335
    /// The default implementation forwards to [`visit_i64`].
1336
    ///
1337
    /// [`visit_i64`]: #method.visit_i64
1338
0
    fn visit_i16<E>(self, v: i16) -> Result<Self::Value, E>
1339
0
    where
1340
0
        E: Error,
1341
0
    {
1342
0
        self.visit_i64(v as i64)
1343
0
    }
1344
1345
    /// The input contains an `i32`.
1346
    ///
1347
    /// The default implementation forwards to [`visit_i64`].
1348
    ///
1349
    /// [`visit_i64`]: #method.visit_i64
1350
0
    fn visit_i32<E>(self, v: i32) -> Result<Self::Value, E>
1351
0
    where
1352
0
        E: Error,
1353
0
    {
1354
0
        self.visit_i64(v as i64)
1355
0
    }
1356
1357
    /// The input contains an `i64`.
1358
    ///
1359
    /// The default implementation fails with a type error.
1360
0
    fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
1361
0
    where
1362
0
        E: Error,
1363
0
    {
1364
0
        Err(Error::invalid_type(Unexpected::Signed(v), &self))
1365
0
    }
1366
1367
    serde_if_integer128! {
1368
        /// The input contains a `i128`.
1369
        ///
1370
        /// This method is available only on Rust compiler versions >=1.26. The
1371
        /// default implementation fails with a type error.
1372
0
        fn visit_i128<E>(self, v: i128) -> Result<Self::Value, E>
1373
0
        where
1374
0
            E: Error,
1375
0
        {
1376
0
            let mut buf = [0u8; 58];
1377
0
            let mut writer = format::Buf::new(&mut buf);
1378
0
            fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as i128", v)).unwrap();
1379
0
            Err(Error::invalid_type(Unexpected::Other(writer.as_str()), &self))
1380
0
        }
1381
    }
1382
1383
    /// The input contains a `u8`.
1384
    ///
1385
    /// The default implementation forwards to [`visit_u64`].
1386
    ///
1387
    /// [`visit_u64`]: #method.visit_u64
1388
0
    fn visit_u8<E>(self, v: u8) -> Result<Self::Value, E>
1389
0
    where
1390
0
        E: Error,
1391
0
    {
1392
0
        self.visit_u64(v as u64)
1393
0
    }
Unexecuted instantiation: <_ as serde::de::Visitor>::visit_u8::<_>
Unexecuted instantiation: <serde::de::ignored_any::IgnoredAny as serde::de::Visitor>::visit_u8::<ciborium::de::error::Error<std::io::error::Error>>
1394
1395
    /// The input contains a `u16`.
1396
    ///
1397
    /// The default implementation forwards to [`visit_u64`].
1398
    ///
1399
    /// [`visit_u64`]: #method.visit_u64
1400
0
    fn visit_u16<E>(self, v: u16) -> Result<Self::Value, E>
1401
0
    where
1402
0
        E: Error,
1403
0
    {
1404
0
        self.visit_u64(v as u64)
1405
0
    }
1406
1407
    /// The input contains a `u32`.
1408
    ///
1409
    /// The default implementation forwards to [`visit_u64`].
1410
    ///
1411
    /// [`visit_u64`]: #method.visit_u64
1412
0
    fn visit_u32<E>(self, v: u32) -> Result<Self::Value, E>
1413
0
    where
1414
0
        E: Error,
1415
0
    {
1416
0
        self.visit_u64(v as u64)
1417
0
    }
1418
1419
    /// The input contains a `u64`.
1420
    ///
1421
    /// The default implementation fails with a type error.
1422
0
    fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
1423
0
    where
1424
0
        E: Error,
1425
0
    {
1426
0
        Err(Error::invalid_type(Unexpected::Unsigned(v), &self))
1427
0
    }
Unexecuted instantiation: <_ as serde::de::Visitor>::visit_u64::<_>
Unexecuted instantiation: <serde::de::impls::StringVisitor as serde::de::Visitor>::visit_u64::<ciborium::de::error::Error<std::io::error::Error>>
Unexecuted instantiation: <serde::de::impls::StringVisitor as serde::de::Visitor>::visit_u64::<ciborium::value::error::Error>
1428
1429
    serde_if_integer128! {
1430
        /// The input contains a `u128`.
1431
        ///
1432
        /// This method is available only on Rust compiler versions >=1.26. The
1433
        /// default implementation fails with a type error.
1434
0
        fn visit_u128<E>(self, v: u128) -> Result<Self::Value, E>
1435
0
        where
1436
0
            E: Error,
1437
0
        {
1438
0
            let mut buf = [0u8; 57];
1439
0
            let mut writer = format::Buf::new(&mut buf);
1440
0
            fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as u128", v)).unwrap();
1441
0
            Err(Error::invalid_type(Unexpected::Other(writer.as_str()), &self))
1442
0
        }
1443
    }
1444
1445
    /// The input contains an `f32`.
1446
    ///
1447
    /// The default implementation forwards to [`visit_f64`].
1448
    ///
1449
    /// [`visit_f64`]: #method.visit_f64
1450
0
    fn visit_f32<E>(self, v: f32) -> Result<Self::Value, E>
1451
0
    where
1452
0
        E: Error,
1453
0
    {
1454
0
        self.visit_f64(v as f64)
1455
0
    }
1456
1457
    /// The input contains an `f64`.
1458
    ///
1459
    /// The default implementation fails with a type error.
1460
0
    fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
1461
0
    where
1462
0
        E: Error,
1463
0
    {
1464
0
        Err(Error::invalid_type(Unexpected::Float(v), &self))
1465
0
    }
Unexecuted instantiation: <_ as serde::de::Visitor>::visit_f64::<_>
Unexecuted instantiation: <<usize as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_f64::<serde_json::error::Error>
Unexecuted instantiation: <<i32 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_f64::<serde_json::error::Error>
Unexecuted instantiation: <<u16 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_f64::<serde_json::error::Error>
Unexecuted instantiation: <base::descriptor_reflection::deserialize_descriptor::DescriptorVisitor as serde::de::Visitor>::visit_f64::<serde_json::error::Error>
Unexecuted instantiation: <<u8 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_f64::<serde_json::error::Error>
Unexecuted instantiation: <<u32 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_f64::<serde_json::error::Error>
Unexecuted instantiation: <<u64 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_f64::<serde_json::error::Error>
1466
1467
    /// The input contains a `char`.
1468
    ///
1469
    /// The default implementation forwards to [`visit_str`] as a one-character
1470
    /// string.
1471
    ///
1472
    /// [`visit_str`]: #method.visit_str
1473
    #[inline]
1474
0
    fn visit_char<E>(self, v: char) -> Result<Self::Value, E>
1475
0
    where
1476
0
        E: Error,
1477
0
    {
1478
0
        self.visit_str(utf8::encode(v).as_str())
1479
0
    }
1480
1481
    /// The input contains a string. The lifetime of the string is ephemeral and
1482
    /// it may be destroyed after this method returns.
1483
    ///
1484
    /// This method allows the `Deserializer` to avoid a copy by retaining
1485
    /// ownership of any buffered data. `Deserialize` implementations that do
1486
    /// not benefit from taking ownership of `String` data should indicate that
1487
    /// to the deserializer by using `Deserializer::deserialize_str` rather than
1488
    /// `Deserializer::deserialize_string`.
1489
    ///
1490
    /// It is never correct to implement `visit_string` without implementing
1491
    /// `visit_str`. Implement neither, both, or just `visit_str`.
1492
0
    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
1493
0
    where
1494
0
        E: Error,
1495
0
    {
1496
0
        Err(Error::invalid_type(Unexpected::Str(v), &self))
1497
0
    }
Unexecuted instantiation: <_ as serde::de::Visitor>::visit_str::<_>
Unexecuted instantiation: <<u64 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_str::<ciborium::de::error::Error<std::io::error::Error>>
Unexecuted instantiation: <<u64 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_str::<ciborium::value::error::Error>
Unexecuted instantiation: <<usize as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_str::<serde_json::error::Error>
Unexecuted instantiation: <<u32 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_str::<serde_json::error::Error>
1498
1499
    /// The input contains a string that lives at least as long as the
1500
    /// `Deserializer`.
1501
    ///
1502
    /// This enables zero-copy deserialization of strings in some formats. For
1503
    /// example JSON input containing the JSON string `"borrowed"` can be
1504
    /// deserialized with zero copying into a `&'a str` as long as the input
1505
    /// data outlives `'a`.
1506
    ///
1507
    /// The default implementation forwards to `visit_str`.
1508
    #[inline]
1509
0
    fn visit_borrowed_str<E>(self, v: &'de str) -> Result<Self::Value, E>
1510
0
    where
1511
0
        E: Error,
1512
0
    {
1513
0
        self.visit_str(v)
1514
0
    }
Unexecuted instantiation: <serde::de::impls::StringVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <serde_json::value::de::KeyClassifier as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<serde_json::value::Value as serde::de::Deserialize>::deserialize::ValueVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <_ as serde::de::Visitor>::visit_borrowed_str::<_>
Unexecuted instantiation: <<devices::fw_cfg::FwCfgParameters as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<base::mmap::Protection as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<snapshot::SnapshotReader as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<snapshot::SnapshotWriter as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::pci::stub::StubPciParameters as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<vm_control::sys::linux::VmMemoryMappingResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::vhost::control_socket::VhostDevRequest as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::UnpinRequest as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::pci::coiommu::CoIommuUnpinPolicy as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <serde::de::impls::StringVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <serde::de::impls::PathBufVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<core::result::Result<_, _> as serde::de::Deserialize>::deserialize::Field as serde::de::Deserialize>::deserialize::FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::iommu::ipc_memory_mapper::IommuResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::proxy::SnapshotFile as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::resource_bridge::PlaneInfo as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::resource_bridge::BufferInfo as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::resource_bridge::ResourceResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::bus::BusType as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::bus::BusRange as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <serde::de::ignored_any::IgnoredAny as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<crypto_generic::SecureByteVec as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<crypto_generic::CryptKey as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::fs::config::CachePolicy as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::VirtioIOMMURequest as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::BatStatus as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::BatHealth as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::BatControlCommand as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::vsock::sys::linux::VsockConfig as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::virtio::iommu::memory_mapper::MemRegion as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::input::InputConfigFile as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::input::InputConfigFileEvent as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::input::InputConfigFileAbsInfo as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<devices::virtio::device_constants::video::VideoBackendType as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::virtio::device_constants::video::VideoDeviceConfig as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::virtio::scsi::ScsiOption as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::serial_device::SerialType as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::serial_device::SerialHardware as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<devices::serial_device::SerialParameters as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <serde::de::impls::PathBufVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<jail::config::JailConfig as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<usize as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::DiskControlResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::VirtioIOMMUVfioResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::VirtioIOMMUResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::UsbControlAttachedDevice as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::DevicesState as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::BatControlResult as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<hypervisor::HypervisorKind as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<swap::SwapStateTransition as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<swap::SwapMetrics as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<swap::SwapStatus as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<swap::SwapState as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_core::Rutabaga2DSnapshot as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_core::RutabagaSnapshot as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<u32 as serde::de::Deserialize>::deserialize::PrimitiveVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_utils::Resource3DInfo as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_utils::DeviceId as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <<rutabaga_gfx::rutabaga_utils::VulkanInfo as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_json::error::Error>
Unexecuted instantiation: <serde::de::impls::PathBufVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<vm_memory::guest_memory::FileBackedMappingParameters as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
Unexecuted instantiation: <<cros_async::sys::linux::executor::ExecutorKindSys as serde::de::Deserialize>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_borrowed_str::<serde_keyvalue::key_values::ParseError>
1515
1516
    /// The input contains a string and ownership of the string is being given
1517
    /// to the `Visitor`.
1518
    ///
1519
    /// This method allows the `Visitor` to avoid a copy by taking ownership of
1520
    /// a string created by the `Deserializer`. `Deserialize` implementations
1521
    /// that benefit from taking ownership of `String` data should indicate that
1522
    /// to the deserializer by using `Deserializer::deserialize_string` rather
1523
    /// than `Deserializer::deserialize_str`, although not every deserializer
1524
    /// will honor such a request.
1525
    ///
1526
    /// It is never correct to implement `visit_string` without implementing
1527
    /// `visit_str`. Implement neither, both, or just `visit_str`.
1528
    ///
1529
    /// The default implementation forwards to `visit_str` and then drops the
1530
    /// `String`.
1531
    #[inline]
1532
    #[cfg(any(feature = "std", feature = "alloc"))]
1533
0
    fn visit_string<E>(self, v: String) -> Result<Self::Value, E>
1534
0
    where
1535
0
        E: Error,
1536
0
    {
1537
0
        self.visit_str(&v)
1538
0
    }
Unexecuted instantiation: <_ as serde::de::Visitor>::visit_string::<_>
Unexecuted instantiation: <serde::de::ignored_any::IgnoredAny as serde::de::Visitor>::visit_string::<ciborium::de::error::Error<std::io::error::Error>>
Unexecuted instantiation: <serde::de::ignored_any::IgnoredAny as serde::de::Visitor>::visit_string::<serde_keyvalue::key_values::ParseError>
1539
1540
    /// The input contains a byte array. The lifetime of the byte array is
1541
    /// ephemeral and it may be destroyed after this method returns.
1542
    ///
1543
    /// This method allows the `Deserializer` to avoid a copy by retaining
1544
    /// ownership of any buffered data. `Deserialize` implementations that do
1545
    /// not benefit from taking ownership of `Vec<u8>` data should indicate that
1546
    /// to the deserializer by using `Deserializer::deserialize_bytes` rather
1547
    /// than `Deserializer::deserialize_byte_buf`.
1548
    ///
1549
    /// It is never correct to implement `visit_byte_buf` without implementing
1550
    /// `visit_bytes`. Implement neither, both, or just `visit_bytes`.
1551
0
    fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>
1552
0
    where
1553
0
        E: Error,
1554
0
    {
1555
0
        let _ = v;
1556
0
        Err(Error::invalid_type(Unexpected::Bytes(v), &self))
1557
0
    }
1558
1559
    /// The input contains a byte array that lives at least as long as the
1560
    /// `Deserializer`.
1561
    ///
1562
    /// This enables zero-copy deserialization of bytes in some formats. For
1563
    /// example Bincode data containing bytes can be deserialized with zero
1564
    /// copying into a `&'a [u8]` as long as the input data outlives `'a`.
1565
    ///
1566
    /// The default implementation forwards to `visit_bytes`.
1567
    #[inline]
1568
0
    fn visit_borrowed_bytes<E>(self, v: &'de [u8]) -> Result<Self::Value, E>
1569
0
    where
1570
0
        E: Error,
1571
0
    {
1572
0
        self.visit_bytes(v)
1573
0
    }
1574
1575
    /// The input contains a byte array and ownership of the byte array is being
1576
    /// given to the `Visitor`.
1577
    ///
1578
    /// This method allows the `Visitor` to avoid a copy by taking ownership of
1579
    /// a byte buffer created by the `Deserializer`. `Deserialize`
1580
    /// implementations that benefit from taking ownership of `Vec<u8>` data
1581
    /// should indicate that to the deserializer by using
1582
    /// `Deserializer::deserialize_byte_buf` rather than
1583
    /// `Deserializer::deserialize_bytes`, although not every deserializer will
1584
    /// honor such a request.
1585
    ///
1586
    /// It is never correct to implement `visit_byte_buf` without implementing
1587
    /// `visit_bytes`. Implement neither, both, or just `visit_bytes`.
1588
    ///
1589
    /// The default implementation forwards to `visit_bytes` and then drops the
1590
    /// `Vec<u8>`.
1591
    #[cfg(any(feature = "std", feature = "alloc"))]
1592
0
    fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>
1593
0
    where
1594
0
        E: Error,
1595
0
    {
1596
0
        self.visit_bytes(&v)
1597
0
    }
Unexecuted instantiation: <_ as serde::de::Visitor>::visit_byte_buf::<_>
Unexecuted instantiation: <serde::de::ignored_any::IgnoredAny as serde::de::Visitor>::visit_byte_buf::<ciborium::de::error::Error<std::io::error::Error>>
1598
1599
    /// The input contains an optional that is absent.
1600
    ///
1601
    /// The default implementation fails with a type error.
1602
0
    fn visit_none<E>(self) -> Result<Self::Value, E>
1603
0
    where
1604
0
        E: Error,
1605
0
    {
1606
0
        Err(Error::invalid_type(Unexpected::Option, &self))
1607
0
    }
1608
1609
    /// The input contains an optional that is present.
1610
    ///
1611
    /// The default implementation fails with a type error.
1612
0
    fn visit_some<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
1613
0
    where
1614
0
        D: Deserializer<'de>,
1615
0
    {
1616
0
        let _ = deserializer;
1617
0
        Err(Error::invalid_type(Unexpected::Option, &self))
1618
0
    }
1619
1620
    /// The input contains a unit `()`.
1621
    ///
1622
    /// The default implementation fails with a type error.
1623
0
    fn visit_unit<E>(self) -> Result<Self::Value, E>
1624
0
    where
1625
0
        E: Error,
1626
0
    {
1627
0
        Err(Error::invalid_type(Unexpected::Unit, &self))
1628
0
    }
1629
1630
    /// The input contains a newtype struct.
1631
    ///
1632
    /// The content of the newtype struct may be read from the given
1633
    /// `Deserializer`.
1634
    ///
1635
    /// The default implementation fails with a type error.
1636
0
    fn visit_newtype_struct<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
1637
0
    where
1638
0
        D: Deserializer<'de>,
1639
0
    {
1640
0
        let _ = deserializer;
1641
0
        Err(Error::invalid_type(Unexpected::NewtypeStruct, &self))
1642
0
    }
1643
1644
    /// The input contains a sequence of elements.
1645
    ///
1646
    /// The default implementation fails with a type error.
1647
0
    fn visit_seq<A>(self, seq: A) -> Result<Self::Value, A::Error>
1648
0
    where
1649
0
        A: SeqAccess<'de>,
1650
0
    {
1651
0
        let _ = seq;
1652
0
        Err(Error::invalid_type(Unexpected::Seq, &self))
1653
0
    }
1654
1655
    /// The input contains a key-value map.
1656
    ///
1657
    /// The default implementation fails with a type error.
1658
0
    fn visit_map<A>(self, map: A) -> Result<Self::Value, A::Error>
1659
0
    where
1660
0
        A: MapAccess<'de>,
1661
0
    {
1662
0
        let _ = map;
1663
0
        Err(Error::invalid_type(Unexpected::Map, &self))
1664
0
    }
Unexecuted instantiation: <_ as serde::de::Visitor>::visit_map::<_>
Unexecuted instantiation: <serde::de::impls::ArrayVisitor<[u16; 3]> as serde::de::Visitor>::visit_map::<serde_keyvalue::key_values::EmptyMapAccess>
Unexecuted instantiation: <<alloc::vec::Vec<_> as serde::de::Deserialize>::deserialize::VecVisitor<u16> as serde::de::Visitor>::visit_map::<serde_keyvalue::key_values::EmptyMapAccess>
1665
1666
    /// The input contains an enum.
1667
    ///
1668
    /// The default implementation fails with a type error.
1669
0
    fn visit_enum<A>(self, data: A) -> Result<Self::Value, A::Error>
1670
0
    where
1671
0
        A: EnumAccess<'de>,
1672
0
    {
1673
0
        let _ = data;
1674
0
        Err(Error::invalid_type(Unexpected::Enum, &self))
1675
0
    }
1676
1677
    // Used when deserializing a flattened Option field. Not public API.
1678
    #[doc(hidden)]
1679
0
    fn __private_visit_untagged_option<D>(self, _: D) -> Result<Self::Value, ()>
1680
0
    where
1681
0
        D: Deserializer<'de>,
1682
0
    {
1683
0
        Err(())
1684
0
    }
1685
}
1686
1687
////////////////////////////////////////////////////////////////////////////////
1688
1689
/// Provides a `Visitor` access to each element of a sequence in the input.
1690
///
1691
/// This is a trait that a `Deserializer` passes to a `Visitor` implementation,
1692
/// which deserializes each item in a sequence.
1693
///
1694
/// # Lifetime
1695
///
1696
/// The `'de` lifetime of this trait is the lifetime of data that may be
1697
/// borrowed by deserialized sequence elements. See the page [Understanding
1698
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
1699
///
1700
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
1701
///
1702
/// # Example implementation
1703
///
1704
/// The [example data format] presented on the website demonstrates an
1705
/// implementation of `SeqAccess` for a basic JSON data format.
1706
///
1707
/// [example data format]: https://serde.rs/data-format.html
1708
pub trait SeqAccess<'de> {
1709
    /// The error type that can be returned if some error occurs during
1710
    /// deserialization.
1711
    type Error: Error;
1712
1713
    /// This returns `Ok(Some(value))` for the next value in the sequence, or
1714
    /// `Ok(None)` if there are no more remaining items.
1715
    ///
1716
    /// `Deserialize` implementations should typically use
1717
    /// `SeqAccess::next_element` instead.
1718
    fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1719
    where
1720
        T: DeserializeSeed<'de>;
1721
1722
    /// This returns `Ok(Some(value))` for the next value in the sequence, or
1723
    /// `Ok(None)` if there are no more remaining items.
1724
    ///
1725
    /// This method exists as a convenience for `Deserialize` implementations.
1726
    /// `SeqAccess` implementations should not override the default behavior.
1727
    #[inline]
1728
0
    fn next_element<T>(&mut self) -> Result<Option<T>, Self::Error>
1729
0
    where
1730
0
        T: Deserialize<'de>,
1731
0
    {
1732
0
        self.next_element_seed(PhantomData)
1733
0
    }
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<serde_json::value::Value>
Unexecuted instantiation: <_ as serde::de::SeqAccess>::next_element::<_>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::SeqAccess>::next_element::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::SeqAccess>::next_element::<u16>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<[u64; 4]>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<core::option::Option<devices::pci::pci_configuration::PciBarConfiguration>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<core::option::Option<devices::irqchip::ioapic::OutEventSnapshot>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<core::option::Option<u32>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<hypervisor::MPState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<hypervisor::IrqRoute>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<devices::vmwdt::VmwdtPerCpuRestore>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<devices::pflash::State>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<snapshot::any_snapshot::AnySnapshot>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<hypervisor::x86_64::LapicState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<hypervisor::x86_64::PitChannelState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<hypervisor::x86_64::IoapicRedirectionTableEntry>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<devices::pci::msix::MsixTableEntry>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<devices::virtio::vhost::worker::VringBase>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<devices::virtio::console::port::ConsolePortSnapshot>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<(usize, snapshot::any_snapshot::AnySnapshot)>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<bool>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<u8>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<usize>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<u32>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<u64>
Unexecuted instantiation: <ciborium::de::BytesAccess<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::de::BytesAccess<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::SeqAccess>::next_element::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <ciborium::de::BytesAccess<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::de::BytesAccess<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::de::Access<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::SeqAccess>::next_element::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<u64>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>>> as serde::de::SeqAccess>::next_element::<u64>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<u64>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>>> as serde::de::SeqAccess>::next_element::<ciborium::value::Value>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>>> as serde::de::SeqAccess>::next_element::<u64>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<alloc::vec::Vec<devices::virtio::input::InputConfigFileEvent>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<alloc::vec::Vec<devices::virtio::input::InputConfigFileAbsInfo>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<core::option::Option<alloc::string::String>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<alloc::collections::btree::map::BTreeMap<alloc::string::String, u16>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<alloc::string::String>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<devices::virtio::input::InputConfigFileEvent>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<devices::virtio::input::InputConfigFileAbsInfo>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<u32>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::next_element::<u16>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<[devices::virtio::resource_bridge::PlaneInfo; 4]>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<alloc::vec::Vec<devices::bus::BusRange>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<alloc::vec::Vec<resources::pci_address::PciAddress>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<alloc::vec::Vec<(u64, u64)>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<core::option::Option<crypto_generic::CryptKey>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<crypto_generic::SecureByteVec>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<snapshot::SnapshotReader>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<snapshot::SnapshotWriter>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<devices::bus::BusType>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<devices::bus::BusRange>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<vm_memory::guest_address::GuestAddress>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<resources::pci_address::PciAddress>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<std::path::PathBuf>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<base::mmap::Protection>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<devices::virtio::resource_bridge::PlaneInfo>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<devices::virtio::iommu::memory_mapper::MemRegion>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<<<devices::proxy::SnapshotFile as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_seq::__DeserializeWith>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<<<devices::virtio::resource_bridge::BufferInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_seq::__DeserializeWith>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_seq::__DeserializeWith>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<<<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_seq::__DeserializeWith>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<(devices::bus::BusRange, devices::bus::BusType)>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<(u64, u64)>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<bool>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<alloc::collections::btree::map::BTreeMap<usize, (u32, u32)>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<swap::SwapMetrics>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<swap::SwapStateTransition>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<swap::SwapState>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<hypervisor::HypervisorKind>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<vm_control::VmMemoryRegionId>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<vm_control::UsbControlAttachedDevice>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<alloc::string::String>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<base::descriptor::SafeDescriptor>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<u8>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<u32>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<u16>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::next_element::<u64>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<[u8; 16]>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<[u32; 4]>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<core::option::Option<rutabaga_gfx::rutabaga_core::Rutabaga2DSnapshot>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<core::option::Option<rutabaga_gfx::rutabaga_utils::VulkanInfo>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<core::option::Option<rutabaga_gfx::rutabaga_utils::Resource3DInfo>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<core::option::Option<u32>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<alloc::collections::btree::map::BTreeMap<u32, alloc::vec::Vec<u8>>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<alloc::collections::btree::map::BTreeMap<u32, rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot>>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<serde_json::value::Value>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<rutabaga_gfx::rutabaga_utils::DeviceId>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<bool>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<u8>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<u32>
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::next_element::<u64>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::next_element::<serde::de::ignored_any::IgnoredAny>
1734
1735
    /// Returns the number of elements remaining in the sequence, if known.
1736
    #[inline]
1737
0
    fn size_hint(&self) -> Option<usize> {
1738
0
        None
1739
0
    }
Unexecuted instantiation: <_ as serde::de::SeqAccess>::size_hint
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::SeqAccess>::size_hint
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::slice::iter::Iter<ciborium::value::Value>> as serde::de::SeqAccess>::size_hint
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::StrRead> as serde::de::SeqAccess>::size_hint
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::SliceRead> as serde::de::SeqAccess>::size_hint
Unexecuted instantiation: <serde_json::de::SeqAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::SeqAccess>::size_hint
1740
}
1741
1742
impl<'de, 'a, A: ?Sized> SeqAccess<'de> for &'a mut A
1743
where
1744
    A: SeqAccess<'de>,
1745
{
1746
    type Error = A::Error;
1747
1748
    #[inline]
1749
0
    fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
1750
0
    where
1751
0
        T: DeserializeSeed<'de>,
1752
0
    {
1753
0
        (**self).next_element_seed(seed)
1754
0
    }
1755
1756
    #[inline]
1757
0
    fn next_element<T>(&mut self) -> Result<Option<T>, Self::Error>
1758
0
    where
1759
0
        T: Deserialize<'de>,
1760
0
    {
1761
0
        (**self).next_element()
1762
0
    }
Unexecuted instantiation: <&mut _ as serde::de::SeqAccess>::next_element::<_>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::SeqAccess>::next_element::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::SeqAccess>::next_element::<u16>
1763
1764
    #[inline]
1765
0
    fn size_hint(&self) -> Option<usize> {
1766
0
        (**self).size_hint()
1767
0
    }
Unexecuted instantiation: <&mut _ as serde::de::SeqAccess>::size_hint
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::SeqAccess>::size_hint
1768
}
1769
1770
////////////////////////////////////////////////////////////////////////////////
1771
1772
/// Provides a `Visitor` access to each entry of a map in the input.
1773
///
1774
/// This is a trait that a `Deserializer` passes to a `Visitor` implementation.
1775
///
1776
/// # Lifetime
1777
///
1778
/// The `'de` lifetime of this trait is the lifetime of data that may be
1779
/// borrowed by deserialized map entries. See the page [Understanding
1780
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
1781
///
1782
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
1783
///
1784
/// # Example implementation
1785
///
1786
/// The [example data format] presented on the website demonstrates an
1787
/// implementation of `MapAccess` for a basic JSON data format.
1788
///
1789
/// [example data format]: https://serde.rs/data-format.html
1790
pub trait MapAccess<'de> {
1791
    /// The error type that can be returned if some error occurs during
1792
    /// deserialization.
1793
    type Error: Error;
1794
1795
    /// This returns `Ok(Some(key))` for the next key in the map, or `Ok(None)`
1796
    /// if there are no more remaining entries.
1797
    ///
1798
    /// `Deserialize` implementations should typically use
1799
    /// `MapAccess::next_key` or `MapAccess::next_entry` instead.
1800
    fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Self::Error>
1801
    where
1802
        K: DeserializeSeed<'de>;
1803
1804
    /// This returns a `Ok(value)` for the next value in the map.
1805
    ///
1806
    /// `Deserialize` implementations should typically use
1807
    /// `MapAccess::next_value` instead.
1808
    ///
1809
    /// # Panics
1810
    ///
1811
    /// Calling `next_value_seed` before `next_key_seed` is incorrect and is
1812
    /// allowed to panic or return bogus results.
1813
    fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Self::Error>
1814
    where
1815
        V: DeserializeSeed<'de>;
1816
1817
    /// This returns `Ok(Some((key, value)))` for the next (key-value) pair in
1818
    /// the map, or `Ok(None)` if there are no more remaining items.
1819
    ///
1820
    /// `MapAccess` implementations should override the default behavior if a
1821
    /// more efficient implementation is possible.
1822
    ///
1823
    /// `Deserialize` implementations should typically use
1824
    /// `MapAccess::next_entry` instead.
1825
    #[inline]
1826
0
    fn next_entry_seed<K, V>(
1827
0
        &mut self,
1828
0
        kseed: K,
1829
0
        vseed: V,
1830
0
    ) -> Result<Option<(K::Value, V::Value)>, Self::Error>
1831
0
    where
1832
0
        K: DeserializeSeed<'de>,
1833
0
        V: DeserializeSeed<'de>,
1834
0
    {
1835
0
        match try!(self.next_key_seed(kseed)) {
1836
0
            Some(key) => {
1837
0
                let value = try!(self.next_value_seed(vseed));
1838
0
                Ok(Some((key, value)))
1839
            }
1840
0
            None => Ok(None),
1841
        }
1842
0
    }
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<alloc::string::String>, core::marker::PhantomData<serde_json::value::Value>>
Unexecuted instantiation: <_ as serde::de::MapAccess>::next_entry_seed::<_, _>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>, core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<ciborium::value::Value>, core::marker::PhantomData<ciborium::value::Value>>
Unexecuted instantiation: <ciborium::de::Access<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<ciborium::value::Value>, core::marker::PhantomData<ciborium::value::Value>>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>, core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<ciborium::value::Value>, core::marker::PhantomData<ciborium::value::Value>>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<ciborium::value::Value>, core::marker::PhantomData<ciborium::value::Value>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<alloc::string::String>, core::marker::PhantomData<u16>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<usize>, core::marker::PhantomData<(u32, u32)>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<alloc::string::String>, core::marker::PhantomData<serde_json::value::Value>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<u32>, core::marker::PhantomData<alloc::vec::Vec<u8>>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<u32>, core::marker::PhantomData<rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_entry_seed::<core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>, core::marker::PhantomData<serde::de::ignored_any::IgnoredAny>>
1843
1844
    /// This returns `Ok(Some(key))` for the next key in the map, or `Ok(None)`
1845
    /// if there are no more remaining entries.
1846
    ///
1847
    /// This method exists as a convenience for `Deserialize` implementations.
1848
    /// `MapAccess` implementations should not override the default behavior.
1849
    #[inline]
1850
0
    fn next_key<K>(&mut self) -> Result<Option<K>, Self::Error>
1851
0
    where
1852
0
        K: Deserialize<'de>,
1853
0
    {
1854
0
        self.next_key_seed(PhantomData)
1855
0
    }
Unexecuted instantiation: <_ as serde::de::MapAccess>::next_key::<_>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::serial_device::SerialParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::fw_cfg::FwCfgParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::pci::stub::StubPciParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::virtio::scsi::ScsiOption as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::virtio::device_constants::video::VideoDeviceConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<devices::virtio::vsock::sys::linux::VsockConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::serial_device::SerialParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::fw_cfg::FwCfgParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::pci::stub::StubPciParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::scsi::ScsiOption as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::device_constants::video::VideoDeviceConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::vsock::sys::linux::VsockConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::IrqRoute as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::bat::GoldfishBatteryState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::bat::GoldfishBatterySnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::PciId as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::acpi::Pm1ResourceSerializable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::acpi::GpeResourceSerializable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::acpi::ACPIPMResrourceSerializable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pl030::Pl030Snapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::vmwdt::VmwdtRestore as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::vmwdt::VmwdtPerCpuRestore as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::serial::SerialSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::irqchip::IrqEventSource as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::x86_64::IoapicRedirectionTableEntry as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::x86_64::IoapicState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::x86_64::PicState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::x86_64::LapicState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::x86_64::PitState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::x86_64::PitChannelState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::pci_configuration::PciConfigurationSerialized as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::pci_configuration::PciBarConfiguration as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::msix::MsixConfigSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::msix::MsixTableEntry as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::pci_root::PciRootSerializable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::pci_root::PciConfigIoSerializable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::pci_root::PciConfigMmioSerializable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::pci::pci_root::PciVirtualConfigMmioSerializable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::virtio_pci_device::VirtioPciDeviceSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::virtio_pci_common_config::VirtioPciCommonConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::pmem::PmemSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::queue::QueueConfigSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::interrupt::InterruptSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::irqchip::ioapic::OutEventSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::irqchip::ioapic::IoapicSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::irqchip::x86_64::IrqChipSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::queue::split_queue::SplitQueueSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::vhost::vsock::VsockSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::vhost::worker::VringBase as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::console::port::ConsolePortSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::console::device::ConsoleSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::irqchip::kvm::x86_64::KvmKernelIrqChipSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::irqchip::kvm::x86_64::KvmSplitIrqChipSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<devices::virtio::vhost::user::device::block::BlockBackendSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<<devices::cmos::Cmos as devices::suspendable::Suspendable>::restore::CmosIndex as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<<devices::bat::BatConfig as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<core::time::Duration as serde::de::Deserialize>::deserialize::Field>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::MapAccess>::next_key::<<devices::virtio::vhost::user::device::handler::DeviceRequestHandlerSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_key::<<devices::virtio::input::InputConfigFile as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_key::<<devices::virtio::input::InputConfigFileEvent as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_key::<<devices::virtio::input::InputConfigFileAbsInfo as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<crypto_generic::SecureByteVec as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<crypto_generic::CryptKey as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<devices::UnpinRequest as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<snapshot::SnapshotReader as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<snapshot::SnapshotWriter as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<devices::bus::BusRange as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<devices::proxy::SnapshotFile as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<base::mmap::Protection as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<devices::virtio::resource_bridge::PlaneInfo as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<devices::virtio::resource_bridge::BufferInfo as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<devices::virtio::iommu::memory_mapper::MemRegion as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<jail::config::JailConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<jail::config::JailConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<swap::SwapStateTransition as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<swap::SwapMetrics as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<swap::SwapStatus as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<vm_control::UsbControlAttachedDevice as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_key::<<<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_key::<<rutabaga_gfx::rutabaga_core::Rutabaga2DSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_key::<<rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_key::<<rutabaga_gfx::rutabaga_core::RutabagaSnapshot as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_key::<<rutabaga_gfx::rutabaga_utils::Resource3DInfo as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_key::<<rutabaga_gfx::rutabaga_utils::DeviceId as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_key::<<rutabaga_gfx::rutabaga_utils::VulkanInfo as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::kvm::x86_64::VcpuExceptionState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::kvm::x86_64::VcpuInterruptState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::kvm::x86_64::VcpuNmiState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::kvm::x86_64::VcpuSmiState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::kvm::x86_64::VcpuTripleFaultState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_key::<<hypervisor::kvm::x86_64::VcpuEvents as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_key::<<vm_memory::guest_memory::FileBackedMappingParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<vm_memory::guest_memory::FileBackedMappingParameters as serde::de::Deserialize>::deserialize::__Field>
1856
1857
    /// This returns a `Ok(value)` for the next value in the map.
1858
    ///
1859
    /// This method exists as a convenience for `Deserialize` implementations.
1860
    /// `MapAccess` implementations should not override the default behavior.
1861
    ///
1862
    /// # Panics
1863
    ///
1864
    /// Calling `next_value` before `next_key` is incorrect and is allowed to
1865
    /// panic or return bogus results.
1866
    #[inline]
1867
0
    fn next_value<V>(&mut self) -> Result<V, Self::Error>
1868
0
    where
1869
0
        V: Deserialize<'de>,
1870
0
    {
1871
0
        self.next_value_seed(PhantomData)
1872
0
    }
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<serde_json::value::Value>
Unexecuted instantiation: <_ as serde::de::MapAccess>::next_value::<_>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<core::option::Option<[u16; 3]>>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<core::option::Option<alloc::vec::Vec<u16>>>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<core::option::Option<alloc::string::String>>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<core::option::Option<resources::pci_address::PciAddress>>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<core::option::Option<cros_async::executor::ExecutorKind>>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<core::option::Option<usize>>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<devices::serial_device::SerialType>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<devices::serial_device::SerialHardware>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<alloc::string::String>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<resources::pci_address::PciAddress>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<devices::pci::stub::PciClassParameters>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<devices::pci::coiommu::CoIommuUnpinPolicy>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<devices::virtio::device_constants::video::VideoBackendType>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<devices::virtio::fs::config::CachePolicy>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<<<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<u8>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<usize>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<u32>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<u16>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<[u16; 3]>>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<alloc::vec::Vec<u16>>>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<alloc::string::String>>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<resources::pci_address::PciAddress>>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<cros_async::executor::ExecutorKind>>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<usize>>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::serial_device::SerialType>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::serial_device::SerialHardware>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<alloc::string::String>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<resources::pci_address::PciAddress>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::pci::stub::PciClassParameters>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::pci::coiommu::CoIommuUnpinPolicy>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::virtio::device_constants::video::VideoBackendType>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::virtio::fs::config::CachePolicy>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<u8>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<usize>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<u32>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<u16>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<[core::option::Option<devices::pci::pci_configuration::PciBarConfiguration>; 7]>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<[hypervisor::x86_64::PitChannelState; 3]>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<[bool; 7]>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<[u8; 32]>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<[u8; 8]>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::option::Option<alloc::vec::Vec<(usize, snapshot::any_snapshot::AnySnapshot)>>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::option::Option<core::time::Duration>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::option::Option<devices::virtio::interrupt::InterruptSnapshot>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::option::Option<(usize, usize)>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<[u64; 4]>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<core::option::Option<devices::irqchip::ioapic::OutEventSnapshot>>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<core::option::Option<u32>>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<hypervisor::MPState>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<hypervisor::IrqRoute>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<devices::vmwdt::VmwdtPerCpuRestore>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<snapshot::any_snapshot::AnySnapshot>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<hypervisor::x86_64::LapicState>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<hypervisor::x86_64::IoapicRedirectionTableEntry>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<devices::pci::msix::MsixTableEntry>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<devices::virtio::vhost::worker::VringBase>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<devices::virtio::console::port::ConsolePortSnapshot>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<bool>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<u64>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::num::wrapping::Wrapping<u16>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::collections::vec_deque::VecDeque<u8>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::IrqSourceChip>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::IrqSource>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::bat::GoldfishBatteryState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::bat::BatConfig>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::acpi::GpeResourceSerializable>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::acpi::Pm1ResourceSerializable>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::irqchip::IrqEventSource>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::irqchip::DeviceId>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<vm_memory::guest_address::GuestAddress>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<alloc::string::String>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<snapshot::any_snapshot::AnySnapshot>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::x86_64::PitRWState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::x86_64::IoapicState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::x86_64::PicInitState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::x86_64::PicState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::x86_64::PitState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::x86_64::PitRWMode>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::pci::pci_configuration::PciBarRegionType>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::pci::pci_configuration::PciBarPrefetchable>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<devices::virtio::virtio_pci_common_config::VirtioPciCommonConfig>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<<<hypervisor::x86_64::IoapicState as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<<<hypervisor::x86_64::LapicState as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<<<devices::pci::pci_configuration::PciConfigurationSerialized as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<<<devices::pci::pci_configuration::PciConfigurationSerialized as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<<<<devices::cmos::Cmos as devices::suspendable::Suspendable>::restore::CmosIndex as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<usize>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<u16>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<i64>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<u64>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::MapAccess>::next_value::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::MapAccess>::next_value::<snapshot::any_snapshot::AnySnapshot>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::MapAccess>::next_value::<u64>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<devices::virtio::input::InputConfigFileEvent>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<devices::virtio::input::InputConfigFileAbsInfo>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<core::option::Option<alloc::string::String>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<alloc::collections::btree::map::BTreeMap<alloc::string::String, u16>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<alloc::string::String>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<u32>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_value::<u16>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<[devices::virtio::resource_bridge::PlaneInfo; 4]>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<devices::bus::BusRange>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<resources::pci_address::PciAddress>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<(u64, u64)>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<core::option::Option<crypto_generic::CryptKey>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<crypto_generic::SecureByteVec>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<snapshot::SnapshotReader>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<snapshot::SnapshotWriter>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<vm_memory::guest_address::GuestAddress>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<std::path::PathBuf>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<base::mmap::Protection>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<<<devices::proxy::SnapshotFile as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<<<devices::virtio::resource_bridge::BufferInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<<<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<<<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<core::option::Option<std::path::PathBuf>>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<std::path::PathBuf>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<std::path::PathBuf>>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<std::path::PathBuf>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<alloc::collections::btree::map::BTreeMap<usize, (u32, u32)>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<swap::SwapMetrics>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<swap::SwapStateTransition>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<swap::SwapState>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<hypervisor::HypervisorKind>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<vm_control::VmMemoryRegionId>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<base::descriptor::SafeDescriptor>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<u8>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<u32>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<u16>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_value::<u64>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<[u8; 16]>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<[u32; 4]>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<core::option::Option<rutabaga_gfx::rutabaga_core::Rutabaga2DSnapshot>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<core::option::Option<rutabaga_gfx::rutabaga_utils::VulkanInfo>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<core::option::Option<rutabaga_gfx::rutabaga_utils::Resource3DInfo>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<core::option::Option<u32>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<alloc::collections::btree::map::BTreeMap<u32, alloc::vec::Vec<u8>>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<alloc::collections::btree::map::BTreeMap<u32, rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<serde_json::value::Value>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<rutabaga_gfx::rutabaga_utils::DeviceId>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<u8>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<u32>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_value::<u64>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::option::Option<bool>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::option::Option<u8>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::option::Option<u32>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<core::option::Option<u64>>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::kvm::x86_64::VcpuNmiState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::kvm::x86_64::VcpuSmiState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::kvm::x86_64::VcpuExceptionState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::kvm::x86_64::VcpuInterruptState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<hypervisor::kvm::x86_64::VcpuTripleFaultState>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<u8>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_value::<u32>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<std::path::PathBuf>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_value::<u64>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<std::path::PathBuf>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<u64>
1873
1874
    /// This returns `Ok(Some((key, value)))` for the next (key-value) pair in
1875
    /// the map, or `Ok(None)` if there are no more remaining items.
1876
    ///
1877
    /// This method exists as a convenience for `Deserialize` implementations.
1878
    /// `MapAccess` implementations should not override the default behavior.
1879
    #[inline]
1880
0
    fn next_entry<K, V>(&mut self) -> Result<Option<(K, V)>, Self::Error>
1881
0
    where
1882
0
        K: Deserialize<'de>,
1883
0
        V: Deserialize<'de>,
1884
0
    {
1885
0
        self.next_entry_seed(PhantomData, PhantomData)
1886
0
    }
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_entry::<alloc::string::String, serde_json::value::Value>
Unexecuted instantiation: <_ as serde::de::MapAccess>::next_entry::<_, _>
Unexecuted instantiation: <serde_keyvalue::key_values::EmptyMapAccess as serde::de::MapAccess>::next_entry::<serde::de::ignored_any::IgnoredAny, serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_entry::<ciborium::value::Value, ciborium::value::Value>
Unexecuted instantiation: <ciborium::de::Access<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>> as serde::de::MapAccess>::next_entry::<ciborium::value::Value, ciborium::value::Value>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::MapAccess>::next_entry::<serde::de::ignored_any::IgnoredAny, serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<std::fs::File>> as serde::de::MapAccess>::next_entry::<ciborium::value::Value, ciborium::value::Value>
Unexecuted instantiation: <ciborium::de::Access<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>> as serde::de::MapAccess>::next_entry::<ciborium::value::Value, ciborium::value::Value>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::StrRead> as serde::de::MapAccess>::next_entry::<alloc::string::String, u16>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::SliceRead> as serde::de::MapAccess>::next_entry::<usize, (u32, u32)>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_entry::<alloc::string::String, serde_json::value::Value>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_entry::<u32, alloc::vec::Vec<u8>>
Unexecuted instantiation: <serde_json::de::MapAccess<serde_json::read::IoRead<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::MapAccess>::next_entry::<u32, rutabaga_gfx::rutabaga_core::RutabagaResourceSnapshot>
Unexecuted instantiation: <ciborium::value::de::Deserializer<core::iter::adapters::peekable::Peekable<core::slice::iter::Iter<(ciborium::value::Value, ciborium::value::Value)>>> as serde::de::MapAccess>::next_entry::<serde::de::ignored_any::IgnoredAny, serde::de::ignored_any::IgnoredAny>
1887
1888
    /// Returns the number of entries remaining in the map, if known.
1889
    #[inline]
1890
0
    fn size_hint(&self) -> Option<usize> {
1891
0
        None
1892
0
    }
1893
}
1894
1895
impl<'de, 'a, A: ?Sized> MapAccess<'de> for &'a mut A
1896
where
1897
    A: MapAccess<'de>,
1898
{
1899
    type Error = A::Error;
1900
1901
    #[inline]
1902
0
    fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Self::Error>
1903
0
    where
1904
0
        K: DeserializeSeed<'de>,
1905
0
    {
1906
0
        (**self).next_key_seed(seed)
1907
0
    }
1908
1909
    #[inline]
1910
0
    fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Self::Error>
1911
0
    where
1912
0
        V: DeserializeSeed<'de>,
1913
0
    {
1914
0
        (**self).next_value_seed(seed)
1915
0
    }
1916
1917
    #[inline]
1918
0
    fn next_entry_seed<K, V>(
1919
0
        &mut self,
1920
0
        kseed: K,
1921
0
        vseed: V,
1922
0
    ) -> Result<Option<(K::Value, V::Value)>, Self::Error>
1923
0
    where
1924
0
        K: DeserializeSeed<'de>,
1925
0
        V: DeserializeSeed<'de>,
1926
0
    {
1927
0
        (**self).next_entry_seed(kseed, vseed)
1928
0
    }
1929
1930
    #[inline]
1931
0
    fn next_entry<K, V>(&mut self) -> Result<Option<(K, V)>, Self::Error>
1932
0
    where
1933
0
        K: Deserialize<'de>,
1934
0
        V: Deserialize<'de>,
1935
0
    {
1936
0
        (**self).next_entry()
1937
0
    }
1938
1939
    #[inline]
1940
0
    fn next_key<K>(&mut self) -> Result<Option<K>, Self::Error>
1941
0
    where
1942
0
        K: Deserialize<'de>,
1943
0
    {
1944
0
        (**self).next_key()
1945
0
    }
Unexecuted instantiation: <&mut _ as serde::de::MapAccess>::next_key::<_>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::serial_device::SerialParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::fw_cfg::FwCfgParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::pci::stub::StubPciParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::scsi::ScsiOption as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::device_constants::video::VideoDeviceConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<devices::virtio::vsock::sys::linux::VsockConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<jail::config::JailConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_key::<<vm_memory::guest_memory::FileBackedMappingParameters as serde::de::Deserialize>::deserialize::__Field>
1946
1947
    #[inline]
1948
0
    fn next_value<V>(&mut self) -> Result<V, Self::Error>
1949
0
    where
1950
0
        V: Deserialize<'de>,
1951
0
    {
1952
0
        (**self).next_value()
1953
0
    }
Unexecuted instantiation: <&mut _ as serde::de::MapAccess>::next_value::<_>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<[u16; 3]>>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<alloc::vec::Vec<u16>>>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<alloc::string::String>>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<resources::pci_address::PciAddress>>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<cros_async::executor::ExecutorKind>>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<usize>>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::serial_device::SerialType>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::serial_device::SerialHardware>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<alloc::string::String>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<resources::pci_address::PciAddress>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::pci::stub::PciClassParameters>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::pci::coiommu::CoIommuUnpinPolicy>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::virtio::device_constants::video::VideoBackendType>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<devices::virtio::fs::config::CachePolicy>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::pci::coiommu::CoIommuParameters as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::virtio::block::DiskOption as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<<<devices::virtio::fs::config::Config as serde::de::Deserialize>::deserialize::__Visitor as serde::de::Visitor>::visit_map::__DeserializeWith>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<u8>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<usize>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<u32>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<u16>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<core::option::Option<std::path::PathBuf>>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<std::path::PathBuf>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<std::path::PathBuf>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<bool>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::MapAccess>::next_value::<u64>
1954
1955
    #[inline]
1956
0
    fn size_hint(&self) -> Option<usize> {
1957
0
        (**self).size_hint()
1958
0
    }
1959
}
1960
1961
////////////////////////////////////////////////////////////////////////////////
1962
1963
/// Provides a `Visitor` access to the data of an enum in the input.
1964
///
1965
/// `EnumAccess` is created by the `Deserializer` and passed to the
1966
/// `Visitor` in order to identify which variant of an enum to deserialize.
1967
///
1968
/// # Lifetime
1969
///
1970
/// The `'de` lifetime of this trait is the lifetime of data that may be
1971
/// borrowed by the deserialized enum variant. See the page [Understanding
1972
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
1973
///
1974
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
1975
///
1976
/// # Example implementation
1977
///
1978
/// The [example data format] presented on the website demonstrates an
1979
/// implementation of `EnumAccess` for a basic JSON data format.
1980
///
1981
/// [example data format]: https://serde.rs/data-format.html
1982
pub trait EnumAccess<'de>: Sized {
1983
    /// The error type that can be returned if some error occurs during
1984
    /// deserialization.
1985
    type Error: Error;
1986
    /// The `Visitor` that will be used to deserialize the content of the enum
1987
    /// variant.
1988
    type Variant: VariantAccess<'de, Error = Self::Error>;
1989
1990
    /// `variant` is called to identify which variant to deserialize.
1991
    ///
1992
    /// `Deserialize` implementations should typically use `EnumAccess::variant`
1993
    /// instead.
1994
    fn variant_seed<V>(self, seed: V) -> Result<(V::Value, Self::Variant), Self::Error>
1995
    where
1996
        V: DeserializeSeed<'de>;
1997
1998
    /// `variant` is called to identify which variant to deserialize.
1999
    ///
2000
    /// This method exists as a convenience for `Deserialize` implementations.
2001
    /// `EnumAccess` implementations should not override the default behavior.
2002
    #[inline]
2003
0
    fn variant<V>(self) -> Result<(V, Self::Variant), Self::Error>
2004
0
    where
2005
0
        V: Deserialize<'de>,
2006
0
    {
2007
0
        self.variant_seed(PhantomData)
2008
0
    }
Unexecuted instantiation: <_ as serde::de::EnumAccess>::variant::<_>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::EnumAccess>::variant::<<devices::serial_device::SerialType as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::EnumAccess>::variant::<<devices::serial_device::SerialHardware as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::EnumAccess>::variant::<<devices::pci::coiommu::CoIommuUnpinPolicy as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::EnumAccess>::variant::<<devices::virtio::device_constants::video::VideoBackendType as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::EnumAccess>::variant::<<devices::virtio::fs::config::CachePolicy as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<hypervisor::IrqSourceChip as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<hypervisor::MPState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<devices::bat::BatConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<devices::pci::CrosvmDeviceId as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<devices::pflash::State as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<devices::irqchip::DeviceId as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PicInitState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PitRWMode as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PitRWState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<devices::pci::pci_configuration::PciBarRegionType as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::EnumAccess>::variant::<<devices::pci::pci_configuration::PciBarPrefetchable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<hypervisor::IrqSourceChip as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<hypervisor::MPState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<devices::bat::BatConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<devices::pci::CrosvmDeviceId as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<devices::pflash::State as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<devices::irqchip::DeviceId as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PicInitState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PitRWMode as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PitRWState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<devices::pci::pci_configuration::PciBarRegionType as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&(ciborium::value::Value, ciborium::value::Value)> as serde::de::EnumAccess>::variant::<<devices::pci::pci_configuration::PciBarPrefetchable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<alloc::string::String>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<hypervisor::IrqSourceChip as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<hypervisor::IrqSource as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<hypervisor::MPState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<devices::bat::BatConfig as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<devices::pci::CrosvmDeviceId as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<devices::pflash::State as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<devices::irqchip::DeviceId as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PicInitState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PitRWMode as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<hypervisor::x86_64::PitRWState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<devices::pci::pci_configuration::PciBarRegionType as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<<devices::pci::pci_configuration::PciBarPrefetchable as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<std::io::buffered::bufreader::BufReader<alloc::boxed::Box<dyn std::io::Read>>>> as serde::de::EnumAccess>::variant::<alloc::string::String>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::EnumAccess>::variant::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::EnumAccess>::variant::<alloc::string::String>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<&std::fs::File>>> as serde::de::EnumAccess>::variant::<alloc::string::String>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VirtioIOMMURequest as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::BatStatus as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::BatHealth as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::BatControlCommand as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::bus::BusType as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::resource_bridge::ResourceResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::sys::linux::VmMemoryMappingResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::iommu::ipc_memory_mapper::IommuResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::vhost::control_socket::VhostDevRequest as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<core::result::Result<_, _> as serde::de::Deserialize>::deserialize::Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VirtioIOMMUVfioCommand as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VirtioIOMMURequest as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::BatStatus as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::BatHealth as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::BatControlCommand as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::DiskControlCommand as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::DeviceControlCommand as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VmIrqResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::bus::BusType as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::proxy::CommandResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::resource_bridge::ResourceInfo as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::resource_bridge::ResourceResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::sys::linux::VmMemoryMappingResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::iommu::ipc_memory_mapper::IommuResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::iommu::ipc_memory_mapper::IommuRequest as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<devices::virtio::vhost::control_socket::VhostDevRequest as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<core::result::Result<_, _> as serde::de::Deserialize>::deserialize::Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<swap::SwapState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<hypervisor::HypervisorKind as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::DiskControlResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VirtioIOMMUVfioResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VirtioIOMMUResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::DevicesState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::BatControlResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<swap::SwapState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<hypervisor::HypervisorKind as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VmResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::DiskControlResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VirtioIOMMUVfioResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VirtioIOMMUResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::UsbControlResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::DevicesState as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::BatControlResult as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::EnumAccess>::variant::<<vm_control::VmMemoryResponse as serde::de::Deserialize>::deserialize::__Field>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::EnumAccess>::variant::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <&mut serde_keyvalue::key_values::KeyValueDeserializer as serde::de::EnumAccess>::variant::<<cros_async::sys::linux::executor::ExecutorKindSys as serde::de::Deserialize>::deserialize::__Field>
2009
}
2010
2011
/// `VariantAccess` is a visitor that is created by the `Deserializer` and
2012
/// passed to the `Deserialize` to deserialize the content of a particular enum
2013
/// variant.
2014
///
2015
/// # Lifetime
2016
///
2017
/// The `'de` lifetime of this trait is the lifetime of data that may be
2018
/// borrowed by the deserialized enum variant. See the page [Understanding
2019
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
2020
///
2021
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
2022
///
2023
/// # Example implementation
2024
///
2025
/// The [example data format] presented on the website demonstrates an
2026
/// implementation of `VariantAccess` for a basic JSON data format.
2027
///
2028
/// [example data format]: https://serde.rs/data-format.html
2029
pub trait VariantAccess<'de>: Sized {
2030
    /// The error type that can be returned if some error occurs during
2031
    /// deserialization. Must match the error type of our `EnumAccess`.
2032
    type Error: Error;
2033
2034
    /// Called when deserializing a variant with no values.
2035
    ///
2036
    /// If the data contains a different type of variant, the following
2037
    /// `invalid_type` error should be constructed:
2038
    ///
2039
    /// ```edition2018
2040
    /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected};
2041
    /// #
2042
    /// # struct X;
2043
    /// #
2044
    /// # impl<'de> VariantAccess<'de> for X {
2045
    /// #     type Error = value::Error;
2046
    /// #
2047
    /// fn unit_variant(self) -> Result<(), Self::Error> {
2048
    ///     // What the data actually contained; suppose it is a tuple variant.
2049
    ///     let unexp = Unexpected::TupleVariant;
2050
    ///     Err(de::Error::invalid_type(unexp, &"unit variant"))
2051
    /// }
2052
    /// #
2053
    /// #     fn newtype_variant_seed<T>(self, _: T) -> Result<T::Value, Self::Error>
2054
    /// #     where
2055
    /// #         T: DeserializeSeed<'de>,
2056
    /// #     { unimplemented!() }
2057
    /// #
2058
    /// #     fn tuple_variant<V>(self, _: usize, _: V) -> Result<V::Value, Self::Error>
2059
    /// #     where
2060
    /// #         V: Visitor<'de>,
2061
    /// #     { unimplemented!() }
2062
    /// #
2063
    /// #     fn struct_variant<V>(self, _: &[&str], _: V) -> Result<V::Value, Self::Error>
2064
    /// #     where
2065
    /// #         V: Visitor<'de>,
2066
    /// #     { unimplemented!() }
2067
    /// # }
2068
    /// ```
2069
    fn unit_variant(self) -> Result<(), Self::Error>;
2070
2071
    /// Called when deserializing a variant with a single value.
2072
    ///
2073
    /// `Deserialize` implementations should typically use
2074
    /// `VariantAccess::newtype_variant` instead.
2075
    ///
2076
    /// If the data contains a different type of variant, the following
2077
    /// `invalid_type` error should be constructed:
2078
    ///
2079
    /// ```edition2018
2080
    /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected};
2081
    /// #
2082
    /// # struct X;
2083
    /// #
2084
    /// # impl<'de> VariantAccess<'de> for X {
2085
    /// #     type Error = value::Error;
2086
    /// #
2087
    /// #     fn unit_variant(self) -> Result<(), Self::Error> {
2088
    /// #         unimplemented!()
2089
    /// #     }
2090
    /// #
2091
    /// fn newtype_variant_seed<T>(self, _seed: T) -> Result<T::Value, Self::Error>
2092
    /// where
2093
    ///     T: DeserializeSeed<'de>,
2094
    /// {
2095
    ///     // What the data actually contained; suppose it is a unit variant.
2096
    ///     let unexp = Unexpected::UnitVariant;
2097
    ///     Err(de::Error::invalid_type(unexp, &"newtype variant"))
2098
    /// }
2099
    /// #
2100
    /// #     fn tuple_variant<V>(self, _: usize, _: V) -> Result<V::Value, Self::Error>
2101
    /// #     where
2102
    /// #         V: Visitor<'de>,
2103
    /// #     { unimplemented!() }
2104
    /// #
2105
    /// #     fn struct_variant<V>(self, _: &[&str], _: V) -> Result<V::Value, Self::Error>
2106
    /// #     where
2107
    /// #         V: Visitor<'de>,
2108
    /// #     { unimplemented!() }
2109
    /// # }
2110
    /// ```
2111
    fn newtype_variant_seed<T>(self, seed: T) -> Result<T::Value, Self::Error>
2112
    where
2113
        T: DeserializeSeed<'de>;
2114
2115
    /// Called when deserializing a variant with a single value.
2116
    ///
2117
    /// This method exists as a convenience for `Deserialize` implementations.
2118
    /// `VariantAccess` implementations should not override the default
2119
    /// behavior.
2120
    #[inline]
2121
0
    fn newtype_variant<T>(self) -> Result<T, Self::Error>
2122
0
    where
2123
0
        T: Deserialize<'de>,
2124
0
    {
2125
0
        self.newtype_variant_seed(PhantomData)
2126
0
    }
Unexecuted instantiation: <_ as serde::de::VariantAccess>::newtype_variant::<_>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::VariantAccess>::newtype_variant::<devices::pci::CrosvmDeviceId>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::VariantAccess>::newtype_variant::<devices::pci::PciId>
Unexecuted instantiation: <ciborium::value::de::Deserializer<&ciborium::value::Value> as serde::de::VariantAccess>::newtype_variant::<u64>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::VariantAccess>::newtype_variant::<devices::pci::CrosvmDeviceId>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::VariantAccess>::newtype_variant::<devices::pci::PciId>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::VariantAccess>::newtype_variant::<u64>
Unexecuted instantiation: <ciborium::tag::TagAccess<&mut ciborium::de::Deserializer<&mut std::io::buffered::bufreader::BufReader<std::fs::File>>> as serde::de::VariantAccess>::newtype_variant::<serde::de::ignored_any::IgnoredAny>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<[u8; 8]>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<alloc::vec::Vec<devices::virtio::iommu::memory_mapper::MemRegion>>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<alloc::vec::Vec<(devices::bus::BusRange, devices::bus::BusType)>>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<core::result::Result<devices::proxy::SnapshotFile, alloc::string::String>>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<core::result::Result<(), alloc::string::String>>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::VmMemoryRegionId>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::VirtioIOMMUVfioCommand>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::BatHealth>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::BatStatus>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<devices::proxy::SnapshotFile>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<base::event::Event>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<devices::virtio::resource_bridge::BufferInfo>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<devices::virtio::resource_bridge::ResourceInfo>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<bool>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<usize>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<u32>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<()>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<[u8; 8]>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<alloc::vec::Vec<devices::virtio::iommu::memory_mapper::MemRegion>>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<alloc::vec::Vec<(devices::bus::BusRange, devices::bus::BusType)>>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<core::result::Result<devices::proxy::SnapshotFile, alloc::string::String>>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<core::result::Result<(), alloc::string::String>>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::VmMemoryRegionId>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::VirtioIOMMUVfioCommand>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::BatHealth>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::BatStatus>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<devices::proxy::SnapshotFile>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<base::event::Event>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<devices::virtio::resource_bridge::BufferInfo>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<devices::virtio::resource_bridge::ResourceInfo>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<bool>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<usize>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<u32>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<()>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<[vm_control::UsbControlAttachedDevice; 16]>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<swap::SwapStatus>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::DevicesState>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::BatControlResult>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::UsbControlResult>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::VirtioIOMMUVfioResult>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::VmMemoryResponseError>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<alloc::string::String>
Unexecuted instantiation: <serde_json::de::VariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<base::errno::Error>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<[vm_control::UsbControlAttachedDevice; 16]>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<swap::SwapStatus>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::DevicesState>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::BatControlResult>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::UsbControlResult>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::VirtioIOMMUVfioResult>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<vm_control::VmMemoryResponseError>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<alloc::string::String>
Unexecuted instantiation: <serde_json::de::UnitVariantAccess<serde_json::read::SliceRead> as serde::de::VariantAccess>::newtype_variant::<base::errno::Error>
Unexecuted instantiation: <ciborium::tag::TagAccess<ciborium::value::de::Deserializer<&ciborium::value::Value>> as serde::de::VariantAccess>::newtype_variant::<serde::de::ignored_any::IgnoredAny>
2127
2128
    /// Called when deserializing a tuple-like variant.
2129
    ///
2130
    /// The `len` is the number of fields expected in the tuple variant.
2131
    ///
2132
    /// If the data contains a different type of variant, the following
2133
    /// `invalid_type` error should be constructed:
2134
    ///
2135
    /// ```edition2018
2136
    /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected};
2137
    /// #
2138
    /// # struct X;
2139
    /// #
2140
    /// # impl<'de> VariantAccess<'de> for X {
2141
    /// #     type Error = value::Error;
2142
    /// #
2143
    /// #     fn unit_variant(self) -> Result<(), Self::Error> {
2144
    /// #         unimplemented!()
2145
    /// #     }
2146
    /// #
2147
    /// #     fn newtype_variant_seed<T>(self, _: T) -> Result<T::Value, Self::Error>
2148
    /// #     where
2149
    /// #         T: DeserializeSeed<'de>,
2150
    /// #     { unimplemented!() }
2151
    /// #
2152
    /// fn tuple_variant<V>(
2153
    ///     self,
2154
    ///     _len: usize,
2155
    ///     _visitor: V,
2156
    /// ) -> Result<V::Value, Self::Error>
2157
    /// where
2158
    ///     V: Visitor<'de>,
2159
    /// {
2160
    ///     // What the data actually contained; suppose it is a unit variant.
2161
    ///     let unexp = Unexpected::UnitVariant;
2162
    ///     Err(de::Error::invalid_type(unexp, &"tuple variant"))
2163
    /// }
2164
    /// #
2165
    /// #     fn struct_variant<V>(self, _: &[&str], _: V) -> Result<V::Value, Self::Error>
2166
    /// #     where
2167
    /// #         V: Visitor<'de>,
2168
    /// #     { unimplemented!() }
2169
    /// # }
2170
    /// ```
2171
    fn tuple_variant<V>(self, len: usize, visitor: V) -> Result<V::Value, Self::Error>
2172
    where
2173
        V: Visitor<'de>;
2174
2175
    /// Called when deserializing a struct-like variant.
2176
    ///
2177
    /// The `fields` are the names of the fields of the struct variant.
2178
    ///
2179
    /// If the data contains a different type of variant, the following
2180
    /// `invalid_type` error should be constructed:
2181
    ///
2182
    /// ```edition2018
2183
    /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected};
2184
    /// #
2185
    /// # struct X;
2186
    /// #
2187
    /// # impl<'de> VariantAccess<'de> for X {
2188
    /// #     type Error = value::Error;
2189
    /// #
2190
    /// #     fn unit_variant(self) -> Result<(), Self::Error> {
2191
    /// #         unimplemented!()
2192
    /// #     }
2193
    /// #
2194
    /// #     fn newtype_variant_seed<T>(self, _: T) -> Result<T::Value, Self::Error>
2195
    /// #     where
2196
    /// #         T: DeserializeSeed<'de>,
2197
    /// #     { unimplemented!() }
2198
    /// #
2199
    /// #     fn tuple_variant<V>(self, _: usize, _: V) -> Result<V::Value, Self::Error>
2200
    /// #     where
2201
    /// #         V: Visitor<'de>,
2202
    /// #     { unimplemented!() }
2203
    /// #
2204
    /// fn struct_variant<V>(
2205
    ///     self,
2206
    ///     _fields: &'static [&'static str],
2207
    ///     _visitor: V,
2208
    /// ) -> Result<V::Value, Self::Error>
2209
    /// where
2210
    ///     V: Visitor<'de>,
2211
    /// {
2212
    ///     // What the data actually contained; suppose it is a unit variant.
2213
    ///     let unexp = Unexpected::UnitVariant;
2214
    ///     Err(de::Error::invalid_type(unexp, &"struct variant"))
2215
    /// }
2216
    /// # }
2217
    /// ```
2218
    fn struct_variant<V>(
2219
        self,
2220
        fields: &'static [&'static str],
2221
        visitor: V,
2222
    ) -> Result<V::Value, Self::Error>
2223
    where
2224
        V: Visitor<'de>;
2225
}
2226
2227
////////////////////////////////////////////////////////////////////////////////
2228
2229
/// Converts an existing value into a `Deserializer` from which other values can
2230
/// be deserialized.
2231
///
2232
/// # Lifetime
2233
///
2234
/// The `'de` lifetime of this trait is the lifetime of data that may be
2235
/// borrowed from the resulting `Deserializer`. See the page [Understanding
2236
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
2237
///
2238
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
2239
///
2240
/// # Example
2241
///
2242
/// ```edition2018
2243
/// use std::str::FromStr;
2244
/// use serde::Deserialize;
2245
/// use serde::de::{value, IntoDeserializer};
2246
///
2247
/// #[derive(Deserialize)]
2248
/// enum Setting {
2249
///     On,
2250
///     Off,
2251
/// }
2252
///
2253
/// impl FromStr for Setting {
2254
///     type Err = value::Error;
2255
///
2256
///     fn from_str(s: &str) -> Result<Self, Self::Err> {
2257
///         Self::deserialize(s.into_deserializer())
2258
///     }
2259
/// }
2260
/// ```
2261
pub trait IntoDeserializer<'de, E: Error = value::Error> {
2262
    /// The type of the deserializer being converted into.
2263
    type Deserializer: Deserializer<'de, Error = E>;
2264
2265
    /// Convert this value into a deserializer.
2266
    fn into_deserializer(self) -> Self::Deserializer;
2267
}
2268
2269
////////////////////////////////////////////////////////////////////////////////
2270
2271
/// Used in error messages.
2272
///
2273
/// - expected `a`
2274
/// - expected `a` or `b`
2275
/// - expected one of `a`, `b`, `c`
2276
///
2277
/// The slice of names must not be empty.
2278
struct OneOf {
2279
    names: &'static [&'static str],
2280
}
2281
2282
impl Display for OneOf {
2283
0
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2284
0
        match self.names.len() {
2285
0
            0 => panic!(), // special case elsewhere
2286
0
            1 => write!(formatter, "`{}`", self.names[0]),
2287
0
            2 => write!(formatter, "`{}` or `{}`", self.names[0], self.names[1]),
2288
            _ => {
2289
0
                try!(write!(formatter, "one of "));
2290
0
                for (i, alt) in self.names.iter().enumerate() {
2291
0
                    if i > 0 {
2292
0
                        try!(write!(formatter, ", "));
2293
0
                    }
2294
0
                    try!(write!(formatter, "`{}`", alt));
2295
                }
2296
0
                Ok(())
2297
            }
2298
        }
2299
0
    }
2300
}