qubit_value/
into_value_default.rs1#[inline]
25fn collect_strings<'a, I>(values: I) -> Vec<String>
26where
27 I: IntoIterator<Item = &'a str>,
28{
29 values.into_iter().map(str::to_owned).collect()
30}
31
32pub trait IntoValueDefault<T> {
48 #[must_use]
54 fn into_value_default(self) -> T;
55}
56
57impl<T> IntoValueDefault<T> for T {
58 #[inline(always)]
59 fn into_value_default(self) -> T {
60 self
61 }
62}
63
64impl IntoValueDefault<String> for &str {
65 #[inline]
66 fn into_value_default(self) -> String {
67 self.to_string()
68 }
69}
70
71impl IntoValueDefault<String> for &String {
72 #[inline]
73 fn into_value_default(self) -> String {
74 self.clone()
75 }
76}
77
78impl<T> IntoValueDefault<Vec<T>> for &[T]
79where
80 T: Clone,
81{
82 #[inline]
83 fn into_value_default(self) -> Vec<T> {
84 self.to_vec()
85 }
86}
87
88impl<T> IntoValueDefault<Vec<T>> for &Vec<T>
89where
90 T: Clone,
91{
92 #[inline]
93 fn into_value_default(self) -> Vec<T> {
94 self.clone()
95 }
96}
97
98impl<T, const N: usize> IntoValueDefault<Vec<T>> for [T; N] {
99 #[inline]
100 fn into_value_default(self) -> Vec<T> {
101 Vec::from(self)
102 }
103}
104
105impl<T, const N: usize> IntoValueDefault<Vec<T>> for &[T; N]
106where
107 T: Clone,
108{
109 #[inline]
110 fn into_value_default(self) -> Vec<T> {
111 self.to_vec()
112 }
113}
114
115impl IntoValueDefault<Vec<String>> for Vec<&str> {
116 #[inline]
117 fn into_value_default(self) -> Vec<String> {
118 collect_strings(self)
119 }
120}
121
122impl IntoValueDefault<Vec<String>> for &[&str] {
123 #[inline]
124 fn into_value_default(self) -> Vec<String> {
125 collect_strings(self.iter().copied())
126 }
127}
128
129impl IntoValueDefault<Vec<String>> for &Vec<&str> {
130 #[inline]
131 fn into_value_default(self) -> Vec<String> {
132 collect_strings(self.iter().copied())
133 }
134}
135
136impl<const N: usize> IntoValueDefault<Vec<String>> for [&str; N] {
137 #[inline]
138 fn into_value_default(self) -> Vec<String> {
139 collect_strings(self)
140 }
141}
142
143impl<const N: usize> IntoValueDefault<Vec<String>> for &[&str; N] {
144 #[inline]
145 fn into_value_default(self) -> Vec<String> {
146 collect_strings(self.iter().copied())
147 }
148}