qubit_value/
into_value_default.rs1#[inline]
13fn collect_strings<'a, I>(values: I) -> Vec<String>
14where
15 I: IntoIterator<Item = &'a str>,
16{
17 values.into_iter().map(str::to_owned).collect()
18}
19
20pub trait IntoValueDefault<T> {
23 #[must_use]
29 fn into_value_default(self) -> T;
30}
31
32impl<T> IntoValueDefault<T> for T {
33 #[inline(always)]
34 fn into_value_default(self) -> T {
35 self
36 }
37}
38
39impl IntoValueDefault<String> for &str {
40 #[inline]
41 fn into_value_default(self) -> String {
42 self.to_string()
43 }
44}
45
46impl IntoValueDefault<String> for &String {
47 #[inline]
48 fn into_value_default(self) -> String {
49 self.clone()
50 }
51}
52
53impl<T> IntoValueDefault<Vec<T>> for &[T]
54where
55 T: Clone,
56{
57 #[inline]
58 fn into_value_default(self) -> Vec<T> {
59 self.to_vec()
60 }
61}
62
63impl<T> IntoValueDefault<Vec<T>> for &Vec<T>
64where
65 T: Clone,
66{
67 #[inline]
68 fn into_value_default(self) -> Vec<T> {
69 self.clone()
70 }
71}
72
73impl<T, const N: usize> IntoValueDefault<Vec<T>> for [T; N] {
74 #[inline]
75 fn into_value_default(self) -> Vec<T> {
76 Vec::from(self)
77 }
78}
79
80impl<T, const N: usize> IntoValueDefault<Vec<T>> for &[T; N]
81where
82 T: Clone,
83{
84 #[inline]
85 fn into_value_default(self) -> Vec<T> {
86 self.to_vec()
87 }
88}
89
90impl IntoValueDefault<Vec<String>> for Vec<&str> {
91 #[inline]
92 fn into_value_default(self) -> Vec<String> {
93 collect_strings(self)
94 }
95}
96
97impl IntoValueDefault<Vec<String>> for &[&str] {
98 #[inline]
99 fn into_value_default(self) -> Vec<String> {
100 collect_strings(self.iter().copied())
101 }
102}
103
104impl IntoValueDefault<Vec<String>> for &Vec<&str> {
105 #[inline]
106 fn into_value_default(self) -> Vec<String> {
107 collect_strings(self.iter().copied())
108 }
109}
110
111impl<const N: usize> IntoValueDefault<Vec<String>> for [&str; N] {
112 #[inline]
113 fn into_value_default(self) -> Vec<String> {
114 collect_strings(self)
115 }
116}
117
118impl<const N: usize> IntoValueDefault<Vec<String>> for &[&str; N] {
119 #[inline]
120 fn into_value_default(self) -> Vec<String> {
121 collect_strings(self.iter().copied())
122 }
123}