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