Skip to main content

smol_bytes/buffer/
iter.rs

1use super::Buffer;
2
3impl<'a> IntoIterator for &'a Buffer {
4  type Item = &'a u8;
5  type IntoIter = core::slice::Iter<'a, u8>;
6
7  #[cfg_attr(not(coverage), inline(always))]
8  fn into_iter(self) -> Self::IntoIter {
9    self.as_slice().iter()
10  }
11}
12
13#[cfg(any(feature = "std", feature = "alloc"))]
14impl IntoIterator for Buffer {
15  type Item = u8;
16  type IntoIter = ::bytes::buf::IntoIter<Buffer>;
17
18  #[cfg_attr(not(coverage), inline(always))]
19  fn into_iter(self) -> Self::IntoIter {
20    ::bytes::buf::IntoIter::new(self)
21  }
22}
23
24/// Iterator over the bytes contained by the buffer.
25#[cfg(not(any(feature = "std", feature = "alloc")))]
26#[derive(Debug)]
27pub struct IntoIter<T> {
28  inner: T,
29}
30
31#[cfg(not(any(feature = "std", feature = "alloc")))]
32const _: () = {
33  impl Iterator for IntoIter<Buffer> {
34    type Item = u8;
35
36    #[cfg_attr(not(coverage), inline(always))]
37    fn next(&mut self) -> Option<Self::Item> {
38      self.inner.try_get_u8().ok()
39    }
40  }
41
42  impl IntoIterator for Buffer {
43    type Item = u8;
44    type IntoIter = IntoIter<Buffer>;
45
46    #[cfg_attr(not(coverage), inline(always))]
47    fn into_iter(self) -> Self::IntoIter {
48      IntoIter { inner: self }
49    }
50  }
51};