gtk4/
string_list.rs
1use crate::{prelude::*, StringList};
4
5impl FromIterator<&'static str> for StringList {
6 fn from_iter<I: IntoIterator<Item = &'static str>>(iter: I) -> Self {
7 assert_initialized_main_thread!();
8 StringList::new(iter.into_iter().collect::<Vec<_>>().as_slice())
9 }
10}
11
12impl Extend<&'static str> for StringList {
13 fn extend<T: IntoIterator<Item = &'static str>>(&mut self, iter: T) {
14 self.splice(
15 self.n_items(),
16 0,
17 iter.into_iter().collect::<Vec<_>>().as_slice(),
18 );
19 }
20}
21
22impl FromIterator<String> for StringList {
23 fn from_iter<I: IntoIterator<Item = String>>(iter: I) -> Self {
24 assert_initialized_main_thread!();
25 let string_list = StringList::new(&[]);
26 for s in iter {
27 string_list.append(&s);
28 }
29 string_list
30 }
31}
32
33impl Extend<String> for StringList {
34 fn extend<T: IntoIterator<Item = String>>(&mut self, iter: T) {
35 for s in iter {
36 self.append(&s);
37 }
38 }
39}
40
41impl Default for StringList {
42 fn default() -> Self {
43 Self::new(&[])
44 }
45}
46
47#[cfg(test)]
48mod tests {
49 use super::StringList;
50 use crate as gtk4;
51
52 #[test]
53 fn test_from_iter() {
54 let strings = vec!["hello", "world", "stuff"]
55 .into_iter()
56 .collect::<StringList>();
57 assert_eq!(strings.string(1).unwrap(), "world");
58
59 let strings2 = vec!["hello".to_string(), "world".to_string()]
60 .into_iter()
61 .collect::<StringList>();
62
63 assert_eq!(strings2.string(1).unwrap(), "world");
64 }
65
66 #[test]
67 fn test_extend() {
68 let mut strings = vec!["hello", "world", "stuff"]
69 .into_iter()
70 .collect::<StringList>();
71 strings.extend(["gtk-rs", "gtk4", "gnome"]);
72 assert_eq!(strings.string(4).unwrap(), "gtk4");
73 }
74}