impl<D: Decoder, A: Array<Item: Decodable<D>>> Decodable<D> for SmallVec<A> {
fn decode(d: &mut D) -> SmallVec<A> {
- d.read_seq(|d, len| (0..len).map(|_| d.read_seq_elt(|d| Decodable::decode(d))).collect())
+ d.read_seq(|d, len| (0..len).map(|_| Decodable::decode(d)).collect())
}
}
impl<D: Decoder, T: Decodable<D>> Decodable<D> for LinkedList<T> {
fn decode(d: &mut D) -> LinkedList<T> {
- d.read_seq(|d, len| (0..len).map(|_| d.read_seq_elt(|d| Decodable::decode(d))).collect())
+ d.read_seq(|d, len| (0..len).map(|_| Decodable::decode(d)).collect())
}
}
impl<D: Decoder, T: Decodable<D>> Decodable<D> for VecDeque<T> {
fn decode(d: &mut D) -> VecDeque<T> {
- d.read_seq(|d, len| (0..len).map(|_| d.read_seq_elt(|d| Decodable::decode(d))).collect())
+ d.read_seq(|d, len| (0..len).map(|_| Decodable::decode(d)).collect())
}
}
d.read_seq(|d, len| {
let mut set = BTreeSet::new();
for _ in 0..len {
- set.insert(d.read_seq_elt(|d| Decodable::decode(d)));
+ set.insert(Decodable::decode(d));
}
set
})
let state = Default::default();
let mut set = HashSet::with_capacity_and_hasher(len, state);
for _ in 0..len {
- set.insert(d.read_seq_elt(|d| Decodable::decode(d)));
+ set.insert(Decodable::decode(d));
}
set
})
let state = Default::default();
let mut set = indexmap::IndexSet::with_capacity_and_hasher(len, state);
for _ in 0..len {
- set.insert(d.read_seq_elt(|d| Decodable::decode(d)));
+ set.insert(Decodable::decode(d));
}
set
})
f(self, len)
}
- #[inline]
- fn read_seq_elt<T, F>(&mut self, f: F) -> T
- where
- F: FnOnce(&mut Self) -> T,
- {
- f(self)
- }
-
fn read_map<T, F>(&mut self, f: F) -> T
where
F: FnOnce(&mut Self, usize) -> T,
unsafe {
let ptr: *mut T = vec.as_mut_ptr();
for i in 0..len {
- std::ptr::write(
- ptr.offset(i as isize),
- d.read_seq_elt(|d| Decodable::decode(d)),
- );
+ std::ptr::write(ptr.offset(i as isize), Decodable::decode(d));
}
vec.set_len(len);
}
assert!(len == N);
let mut v = [0u8; N];
for i in 0..len {
- v[i] = d.read_seq_elt(|d| Decodable::decode(d));
+ v[i] = Decodable::decode(d);
}
v
})