nextest_runner/config/
track_default.rs1use serde::{Deserialize, Deserializer};
5
6#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
12pub(crate) struct TrackDefault<T> {
13 pub value: T,
15 pub is_deserialized: bool,
17}
18
19impl<T> TrackDefault<T> {
20 pub fn with_default_value(value: T) -> Self {
21 Self {
22 value,
23 is_deserialized: false,
24 }
25 }
26
27 pub fn with_deserialized_value(value: T) -> Self {
28 Self {
29 value,
30 is_deserialized: true,
31 }
32 }
33}
34
35impl<'de, T> Deserialize<'de> for TrackDefault<T>
36where
37 T: Deserialize<'de>,
38{
39 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
40 where
41 D: Deserializer<'de>,
42 {
43 let value = Self::with_deserialized_value(T::deserialize(deserializer)?);
44 Ok(value)
45 }
46}