1use super::{Decode, DecodeSliceBuilder, Decoder, SequenceDecoder};
2
3#[inline]
5pub fn default_decode_slice<'de, D, V, T>(decoder: D) -> Result<V, D::Error>
6where
7 D: Decoder<'de>,
8 V: DecodeSliceBuilder<T, D::Allocator>,
9 T: Decode<'de, D::Mode, D::Allocator>,
10{
11 use crate::Context;
12
13 let cx = decoder.cx();
14
15 decoder.decode_sequence(move |seq| {
16 let mut out = V::with_capacity(cx, crate::internal::size_hint::cautious(seq.size_hint()))?;
17 let mut index = 0usize;
18
19 while let Some(value) = seq.try_decode_next()? {
20 cx.enter_sequence_index(index);
21 let value = T::decode(value)?;
22 out.push(cx, value)?;
23 cx.leave_sequence_index();
24 index = index.wrapping_add(1);
25 }
26
27 Ok(out)
28 })
29}