Skip to main content

smol_bytes/utf8_bytes_mut/
iter.rs

1use std::string::String;
2
3use super::*;
4
5impl Extend<char> for Utf8BytesMut {
6  #[cfg_attr(not(coverage), inline(always))]
7  fn extend<T: IntoIterator<Item = char>>(&mut self, iter: T) {
8    for ch in iter {
9      self.push(ch);
10    }
11  }
12}
13
14impl<'a> Extend<&'a char> for Utf8BytesMut {
15  #[cfg_attr(not(coverage), inline(always))]
16  fn extend<T: IntoIterator<Item = &'a char>>(&mut self, iter: T) {
17    self.extend(iter.into_iter().copied());
18  }
19}
20
21impl<'a> Extend<&'a str> for Utf8BytesMut {
22  #[cfg_attr(not(coverage), inline(always))]
23  fn extend<T: IntoIterator<Item = &'a str>>(&mut self, iter: T) {
24    for s in iter {
25      self.push_str(s);
26    }
27  }
28}
29
30impl Extend<String> for Utf8BytesMut {
31  #[cfg_attr(not(coverage), inline(always))]
32  fn extend<T: IntoIterator<Item = String>>(&mut self, iter: T) {
33    for s in iter {
34      self.push_str(&s);
35    }
36  }
37}
38
39impl<'a> Extend<&'a String> for Utf8BytesMut {
40  #[cfg_attr(not(coverage), inline(always))]
41  fn extend<T: IntoIterator<Item = &'a String>>(&mut self, iter: T) {
42    for s in iter {
43      self.push_str(s);
44    }
45  }
46}
47
48impl<T> FromIterator<T> for Utf8BytesMut
49where
50  Utf8BytesMut: Extend<T>,
51{
52  #[cfg_attr(not(coverage), inline(always))]
53  fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
54    let mut bytes = Self::new();
55    bytes.extend(iter);
56    bytes
57  }
58}