Coverage Report

Created: 2023-04-25 07:07

/rust/registry/src/index.crates.io-6f17d22bba15001f/indexmap-1.9.1/src/serde.rs
Line
Count
Source (jump to first uncovered line)
1
use serde::de::value::{MapDeserializer, SeqDeserializer};
2
use serde::de::{
3
    Deserialize, Deserializer, Error, IntoDeserializer, MapAccess, SeqAccess, Visitor,
4
};
5
use serde::ser::{Serialize, Serializer};
6
7
use core::fmt::{self, Formatter};
8
use core::hash::{BuildHasher, Hash};
9
use core::marker::PhantomData;
10
11
use crate::IndexMap;
12
13
/// Requires crate feature `"serde"` or `"serde-1"`
14
impl<K, V, S> Serialize for IndexMap<K, V, S>
15
where
16
    K: Serialize + Hash + Eq,
17
    V: Serialize,
18
    S: BuildHasher,
19
{
20
659k
    fn serialize<T>(&self, serializer: T) -> Result<T::Ok, T::Error>
21
659k
    where
22
659k
        T: Serializer,
23
659k
    {
24
659k
        serializer.collect_map(self)
25
659k
    }
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, (alloc::string::String, wasmtime_environ::component::types::TypeDef)> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<(alloc::string::String, alloc::string::String), wasmtime_types::EntityType> as serde::ser::Serialize>::serialize::<&mut bincode::ser::Serializer<&mut alloc::vec::Vec<u8>, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_types::EntityType> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_types::EntityType> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef>> as serde::ser::Serialize>::serialize::<&mut bincode::ser::Serializer<&mut alloc::vec::Vec<u8>, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_types::EntityType> as serde::ser::Serialize>::serialize::<&mut bincode::ser::Serializer<&mut alloc::vec::Vec<u8>, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<(alloc::string::String, alloc::string::String), wasmtime_types::EntityType> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::Export> as serde::ser::Serialize>::serialize::<&mut bincode::ser::Serializer<&mut alloc::vec::Vec<u8>, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, (alloc::string::String, wasmtime_environ::component::types::TypeDef)> as serde::ser::Serialize>::serialize::<&mut bincode::ser::Serializer<&mut alloc::vec::Vec<u8>, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
<indexmap::map::IndexMap<alloc::string::String, wasmtime_types::EntityIndex> as serde::ser::Serialize>::serialize::<&mut bincode::ser::Serializer<&mut alloc::vec::Vec<u8>, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Line
Count
Source
20
329k
    fn serialize<T>(&self, serializer: T) -> Result<T::Ok, T::Error>
21
329k
    where
22
329k
        T: Serializer,
23
329k
    {
24
329k
        serializer.collect_map(self)
25
329k
    }
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef>> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>>>
<indexmap::map::IndexMap<alloc::string::String, wasmtime_types::EntityIndex> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>>>
Line
Count
Source
20
329k
    fn serialize<T>(&self, serializer: T) -> Result<T::Ok, T::Error>
21
329k
    where
22
329k
        T: Serializer,
23
329k
    {
24
329k
        serializer.collect_map(self)
25
329k
    }
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_types::EntityIndex> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, (alloc::string::String, wasmtime_environ::component::types::TypeDef)> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef>> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<(alloc::string::String, alloc::string::String), wasmtime_types::EntityType> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::Export> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef> as serde::ser::Serialize>::serialize::<&mut bincode::ser::Serializer<&mut alloc::vec::Vec<u8>, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::Export> as serde::ser::Serialize>::serialize::<&mut bincode::ser::SizeChecker<&mut bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>>>
Unexecuted instantiation: <indexmap::map::IndexMap<_, _, _> as serde::ser::Serialize>::serialize::<_>
26
}
27
28
struct IndexMapVisitor<K, V, S>(PhantomData<(K, V, S)>);
29
30
impl<'de, K, V, S> Visitor<'de> for IndexMapVisitor<K, V, S>
31
where
32
    K: Deserialize<'de> + Eq + Hash,
33
    V: Deserialize<'de>,
34
    S: Default + BuildHasher,
35
{
36
    type Value = IndexMap<K, V, S>;
37
38
0
    fn expecting(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
39
0
        write!(formatter, "a map")
40
0
    }
41
42
15.1k
    fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
43
15.1k
    where
44
15.1k
        A: MapAccess<'de>,
45
15.1k
    {
46
15.1k
        let mut values =
47
15.1k
            IndexMap::with_capacity_and_hasher(map.size_hint().unwrap_or(0), S::default());
48
49
114k
        while let Some((key, value)) = map.next_entry()? {
50
99.0k
            values.insert(key, value);
51
99.0k
        }
52
53
15.1k
        Ok(values)
54
15.1k
    }
Unexecuted instantiation: <indexmap::serde::IndexMapVisitor<(alloc::string::String, alloc::string::String), wasmtime_types::EntityType, std::collections::hash::map::RandomState> as serde::de::Visitor>::visit_map::<<&mut bincode::de::Deserializer<_, _> as serde::de::Deserializer>::deserialize_map::Access<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
<indexmap::serde::IndexMapVisitor<alloc::string::String, wasmtime_types::EntityIndex, std::collections::hash::map::RandomState> as serde::de::Visitor>::visit_map::<<&mut bincode::de::Deserializer<_, _> as serde::de::Deserializer>::deserialize_map::Access<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Line
Count
Source
42
15.1k
    fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
43
15.1k
    where
44
15.1k
        A: MapAccess<'de>,
45
15.1k
    {
46
15.1k
        let mut values =
47
15.1k
            IndexMap::with_capacity_and_hasher(map.size_hint().unwrap_or(0), S::default());
48
49
114k
        while let Some((key, value)) = map.next_entry()? {
50
99.0k
            values.insert(key, value);
51
99.0k
        }
52
53
15.1k
        Ok(values)
54
15.1k
    }
Unexecuted instantiation: <indexmap::serde::IndexMapVisitor<alloc::string::String, indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef>, std::collections::hash::map::RandomState> as serde::de::Visitor>::visit_map::<<&mut bincode::de::Deserializer<_, _> as serde::de::Deserializer>::deserialize_map::Access<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::serde::IndexMapVisitor<alloc::string::String, wasmtime_types::EntityType, std::collections::hash::map::RandomState> as serde::de::Visitor>::visit_map::<<&mut bincode::de::Deserializer<_, _> as serde::de::Deserializer>::deserialize_map::Access<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::serde::IndexMapVisitor<alloc::string::String, wasmtime_environ::component::info::Export, std::collections::hash::map::RandomState> as serde::de::Visitor>::visit_map::<<&mut bincode::de::Deserializer<_, _> as serde::de::Deserializer>::deserialize_map::Access<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::serde::IndexMapVisitor<alloc::string::String, wasmtime_environ::component::info::CoreDef, std::collections::hash::map::RandomState> as serde::de::Visitor>::visit_map::<<&mut bincode::de::Deserializer<_, _> as serde::de::Deserializer>::deserialize_map::Access<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::serde::IndexMapVisitor<alloc::string::String, (alloc::string::String, wasmtime_environ::component::types::TypeDef), std::collections::hash::map::RandomState> as serde::de::Visitor>::visit_map::<<&mut bincode::de::Deserializer<_, _> as serde::de::Deserializer>::deserialize_map::Access<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::serde::IndexMapVisitor<_, _, _> as serde::de::Visitor>::visit_map::<_>
55
}
56
57
/// Requires crate feature `"serde"` or `"serde-1"`
58
impl<'de, K, V, S> Deserialize<'de> for IndexMap<K, V, S>
59
where
60
    K: Deserialize<'de> + Eq + Hash,
61
    V: Deserialize<'de>,
62
    S: Default + BuildHasher,
63
{
64
15.1k
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
65
15.1k
    where
66
15.1k
        D: Deserializer<'de>,
67
15.1k
    {
68
15.1k
        deserializer.deserialize_map(IndexMapVisitor(PhantomData))
69
15.1k
    }
<indexmap::map::IndexMap<alloc::string::String, wasmtime_types::EntityIndex> as serde::de::Deserialize>::deserialize::<&mut bincode::de::Deserializer<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Line
Count
Source
64
15.1k
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
65
15.1k
    where
66
15.1k
        D: Deserializer<'de>,
67
15.1k
    {
68
15.1k
        deserializer.deserialize_map(IndexMapVisitor(PhantomData))
69
15.1k
    }
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::Export> as serde::de::Deserialize>::deserialize::<&mut bincode::de::Deserializer<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<(alloc::string::String, alloc::string::String), wasmtime_types::EntityType> as serde::de::Deserialize>::deserialize::<&mut bincode::de::Deserializer<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_types::EntityType> as serde::de::Deserialize>::deserialize::<&mut bincode::de::Deserializer<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef> as serde::de::Deserialize>::deserialize::<&mut bincode::de::Deserializer<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, (alloc::string::String, wasmtime_environ::component::types::TypeDef)> as serde::de::Deserialize>::deserialize::<&mut bincode::de::Deserializer<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<alloc::string::String, indexmap::map::IndexMap<alloc::string::String, wasmtime_environ::component::info::CoreDef>> as serde::de::Deserialize>::deserialize::<&mut bincode::de::Deserializer<bincode::de::read::SliceReader, bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>>>
Unexecuted instantiation: <indexmap::map::IndexMap<_, _, _> as serde::de::Deserialize>::deserialize::<_>
70
}
71
72
impl<'de, K, V, S, E> IntoDeserializer<'de, E> for IndexMap<K, V, S>
73
where
74
    K: IntoDeserializer<'de, E> + Eq + Hash,
75
    V: IntoDeserializer<'de, E>,
76
    S: BuildHasher,
77
    E: Error,
78
{
79
    type Deserializer = MapDeserializer<'de, <Self as IntoIterator>::IntoIter, E>;
80
81
0
    fn into_deserializer(self) -> Self::Deserializer {
82
0
        MapDeserializer::new(self.into_iter())
83
0
    }
84
}
85
86
use crate::IndexSet;
87
88
/// Requires crate feature `"serde"` or `"serde-1"`
89
impl<T, S> Serialize for IndexSet<T, S>
90
where
91
    T: Serialize + Hash + Eq,
92
    S: BuildHasher,
93
{
94
0
    fn serialize<Se>(&self, serializer: Se) -> Result<Se::Ok, Se::Error>
95
0
    where
96
0
        Se: Serializer,
97
0
    {
98
0
        serializer.collect_seq(self)
99
0
    }
100
}
101
102
struct IndexSetVisitor<T, S>(PhantomData<(T, S)>);
103
104
impl<'de, T, S> Visitor<'de> for IndexSetVisitor<T, S>
105
where
106
    T: Deserialize<'de> + Eq + Hash,
107
    S: Default + BuildHasher,
108
{
109
    type Value = IndexSet<T, S>;
110
111
0
    fn expecting(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
112
0
        write!(formatter, "a set")
113
0
    }
114
115
0
    fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
116
0
    where
117
0
        A: SeqAccess<'de>,
118
0
    {
119
0
        let mut values =
120
0
            IndexSet::with_capacity_and_hasher(seq.size_hint().unwrap_or(0), S::default());
121
122
0
        while let Some(value) = seq.next_element()? {
123
0
            values.insert(value);
124
0
        }
125
126
0
        Ok(values)
127
0
    }
128
}
129
130
/// Requires crate feature `"serde"` or `"serde-1"`
131
impl<'de, T, S> Deserialize<'de> for IndexSet<T, S>
132
where
133
    T: Deserialize<'de> + Eq + Hash,
134
    S: Default + BuildHasher,
135
{
136
0
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
137
0
    where
138
0
        D: Deserializer<'de>,
139
0
    {
140
0
        deserializer.deserialize_seq(IndexSetVisitor(PhantomData))
141
0
    }
142
}
143
144
impl<'de, T, S, E> IntoDeserializer<'de, E> for IndexSet<T, S>
145
where
146
    T: IntoDeserializer<'de, E> + Eq + Hash,
147
    S: BuildHasher,
148
    E: Error,
149
{
150
    type Deserializer = SeqDeserializer<<Self as IntoIterator>::IntoIter, E>;
151
152
0
    fn into_deserializer(self) -> Self::Deserializer {
153
0
        SeqDeserializer::new(self.into_iter())
154
0
    }
155
}