V: Decodable<D>,
{
fn decode(d: &mut D) -> BTreeMap<K, V> {
- d.read_map(|d, len| {
- let mut map = BTreeMap::new();
- for _ in 0..len {
- let key = Decodable::decode(d);
- let val = Decodable::decode(d);
- map.insert(key, val);
- }
- map
- })
+ let len = d.read_usize();
+ let mut map = BTreeMap::new();
+ for _ in 0..len {
+ let key = Decodable::decode(d);
+ let val = Decodable::decode(d);
+ map.insert(key, val);
+ }
+ map
}
}
S: BuildHasher + Default,
{
fn decode(d: &mut D) -> HashMap<K, V, S> {
- d.read_map(|d, len| {
- let state = Default::default();
- let mut map = HashMap::with_capacity_and_hasher(len, state);
- for _ in 0..len {
- let key = Decodable::decode(d);
- let val = Decodable::decode(d);
- map.insert(key, val);
- }
- map
- })
+ let len = d.read_usize();
+ let state = Default::default();
+ let mut map = HashMap::with_capacity_and_hasher(len, state);
+ for _ in 0..len {
+ let key = Decodable::decode(d);
+ let val = Decodable::decode(d);
+ map.insert(key, val);
+ }
+ map
}
}
S: BuildHasher + Default,
{
fn decode(d: &mut D) -> indexmap::IndexMap<K, V, S> {
- d.read_map(|d, len| {
- let state = Default::default();
- let mut map = indexmap::IndexMap::with_capacity_and_hasher(len, state);
- for _ in 0..len {
- let key = Decodable::decode(d);
- let val = Decodable::decode(d);
- map.insert(key, val);
- }
- map
- })
+ let len = d.read_usize();
+ let state = Default::default();
+ let mut map = indexmap::IndexMap::with_capacity_and_hasher(len, state);
+ for _ in 0..len {
+ let key = Decodable::decode(d);
+ let val = Decodable::decode(d);
+ map.insert(key, val);
+ }
+ map
}
}
fn read_char(&mut self) -> char;
fn read_str(&mut self) -> Cow<'_, str>;
fn read_raw_bytes_into(&mut self, s: &mut [u8]);
-
- fn read_map<T, F>(&mut self, f: F) -> T
- where
- F: FnOnce(&mut Self, usize) -> T,
- {
- let len = self.read_usize();
- f(self, len)
- }
}
/// Trait for types that can be serialized