tailwindcss_to_rust_macros/
to_option_vec_string.rs1pub trait ToOptionVecString {
16 fn to_option_vec_string(self) -> Option<Vec<String>>;
17}
18
19impl<T: ToOptionVecString + Clone> ToOptionVecString for &T {
22 fn to_option_vec_string(self) -> Option<Vec<String>> {
23 self.clone().to_option_vec_string()
24 }
25}
26
27impl ToOptionVecString for String {
30 fn to_option_vec_string(self) -> Option<Vec<String>> {
31 Some(vec![self])
32 }
33}
34
35impl ToOptionVecString for &str {
36 fn to_option_vec_string(self) -> Option<Vec<String>> {
37 Some(vec![self.to_string()])
38 }
39}
40
41impl<T: ToOptionVecString> ToOptionVecString for Option<T> {
44 fn to_option_vec_string(self) -> Option<Vec<String>> {
45 self.and_then(ToOptionVecString::to_option_vec_string)
46 }
47}
48
49impl<T: ToOptionVecString> ToOptionVecString for Vec<T> {
50 fn to_option_vec_string(self) -> Option<Vec<String>> {
51 let classes = self
52 .into_iter()
53 .filter_map(ToOptionVecString::to_option_vec_string)
54 .flatten();
55 Some(classes.collect())
56 }
57}
58
59impl<T: ToOptionVecString + Clone> ToOptionVecString for &[T] {
60 fn to_option_vec_string(self) -> Option<Vec<String>> {
61 let classes = self
62 .iter()
63 .filter_map(ToOptionVecString::to_option_vec_string)
64 .flatten();
65 Some(classes.collect())
66 }
67}