1use super::Value;
2use crate::StaticNode;
3use crate::{borrowed, cow::Cow};
4use std::borrow::Cow as StdCow;
5
6impl<'borrow, 'tape, 'value> From<borrowed::Value<'value>> for Value<'borrow, 'tape, 'value> {
7 #[cfg_attr(not(feature = "no-inline"), inline)]
8 #[must_use]
9 fn from(v: borrowed::Value<'value>) -> Self {
10 Value::Value(StdCow::Owned(v))
11 }
12}
13
14impl<'borrow, 'tape, 'value> From<StaticNode> for Value<'borrow, 'tape, 'value> {
15 #[cfg_attr(not(feature = "no-inline"), inline)]
16 #[must_use]
17 fn from(v: StaticNode) -> Self {
18 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
19 }
20}
21
22impl<'borrow, 'tape, 'value, T> From<Option<T>> for Value<'borrow, 'tape, 'value>
23where
24 borrowed::Value<'value>: From<Option<T>>,
25{
26 #[cfg_attr(not(feature = "no-inline"), inline)]
27 #[must_use]
28 fn from(v: Option<T>) -> Self {
29 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
30 }
31}
32impl<'borrow, 'tape, 'value> From<&'value str> for Value<'borrow, 'tape, 'value> {
34 #[cfg_attr(not(feature = "no-inline"), inline)]
35 #[must_use]
36 fn from(v: &'value str) -> Self {
37 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
38 }
39}
40
41#[cfg(feature = "beef")]
42impl<'borrow, 'tape, 'value> From<std::borrow::Cow<'value, str>> for Value<'borrow, 'tape, 'value> {
43 #[cfg_attr(not(feature = "no-inline"), inline)]
44 #[must_use]
45 fn from(v: std::borrow::Cow<'value, str>) -> Self {
46 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
47 }
48}
49
50#[cfg(not(feature = "beef"))]
51impl<'borrow, 'tape, 'value> From<std::borrow::Cow<'value, str>> for Value<'borrow, 'tape, 'value> {
52 #[cfg_attr(not(feature = "no-inline"), inline)]
53 #[must_use]
54 fn from(v: std::borrow::Cow<'value, str>) -> Self {
55 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
56 }
57}
58
59#[cfg(feature = "beef")]
60impl<'borrow, 'tape, 'value> From<beef::lean::Cow<'value, str>> for Value<'borrow, 'tape, 'value> {
61 #[cfg_attr(not(feature = "no-inline"), inline)]
62 #[must_use]
63 fn from(v: beef::lean::Cow<'value, str>) -> Self {
64 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
65 }
66}
67
68impl<'borrow, 'tape, 'value> From<String> for Value<'borrow, 'tape, 'value> {
69 #[cfg_attr(not(feature = "no-inline"), inline)]
70 #[must_use]
71 fn from(v: String) -> Self {
72 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
73 }
74}
75
76impl<'borrow, 'tape, 'value> From<bool> for Value<'borrow, 'tape, 'value> {
78 #[cfg_attr(not(feature = "no-inline"), inline)]
79 #[must_use]
80 fn from(v: bool) -> Self {
81 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
82 }
83}
84impl<'borrow, 'tape, 'value> From<()> for Value<'borrow, 'tape, 'value> {
85 #[cfg_attr(not(feature = "no-inline"), inline)]
86 #[must_use]
87 fn from(v: ()) -> Self {
88 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
89 }
90}
91
92impl<'borrow, 'tape, 'value> From<i8> for Value<'borrow, 'tape, 'value> {
94 #[cfg_attr(not(feature = "no-inline"), inline)]
95 #[must_use]
96 fn from(v: i8) -> Self {
97 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
98 }
99}
100
101impl<'borrow, 'tape, 'value> From<i16> for Value<'borrow, 'tape, 'value> {
102 #[cfg_attr(not(feature = "no-inline"), inline)]
103 #[must_use]
104 fn from(v: i16) -> Self {
105 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
106 }
107}
108
109impl<'borrow, 'tape, 'value> From<i32> for Value<'borrow, 'tape, 'value> {
110 #[cfg_attr(not(feature = "no-inline"), inline)]
111 #[must_use]
112 fn from(v: i32) -> Self {
113 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
114 }
115}
116
117impl<'borrow, 'tape, 'value> From<i64> for Value<'borrow, 'tape, 'value> {
118 #[cfg_attr(not(feature = "no-inline"), inline)]
119 #[must_use]
120 fn from(v: i64) -> Self {
121 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
122 }
123}
124
125#[cfg(feature = "128bit")]
126impl<'borrow, 'tape, 'value> From<i128> for Value<'borrow, 'tape, 'value> {
127 #[cfg_attr(not(feature = "no-inline"), inline)]
128 #[must_use]
129 fn from(v: i128) -> Self {
130 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
131 }
132}
133
134impl<'borrow, 'tape, 'value> From<u8> for Value<'borrow, 'tape, 'value> {
136 #[cfg_attr(not(feature = "no-inline"), inline)]
137 #[must_use]
138 fn from(v: u8) -> Self {
139 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
140 }
141}
142
143impl<'borrow, 'tape, 'value> From<u16> for Value<'borrow, 'tape, 'value> {
144 #[cfg_attr(not(feature = "no-inline"), inline)]
145 #[must_use]
146 fn from(v: u16) -> Self {
147 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
148 }
149}
150
151impl<'borrow, 'tape, 'value> From<u32> for Value<'borrow, 'tape, 'value> {
152 #[cfg_attr(not(feature = "no-inline"), inline)]
153 #[must_use]
154 fn from(v: u32) -> Self {
155 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
156 }
157}
158
159impl<'borrow, 'tape, 'value> From<u64> for Value<'borrow, 'tape, 'value> {
160 #[cfg_attr(not(feature = "no-inline"), inline)]
161 #[must_use]
162 fn from(v: u64) -> Self {
163 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
164 }
165}
166
167#[cfg(feature = "128bit")]
168impl<'borrow, 'tape, 'value> From<u128> for Value<'borrow, 'tape, 'value> {
169 #[cfg_attr(not(feature = "no-inline"), inline)]
170 #[must_use]
171 fn from(v: u128) -> Self {
172 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
173 }
174}
175
176impl<'borrow, 'tape, 'value> From<usize> for Value<'borrow, 'tape, 'value> {
177 #[cfg_attr(not(feature = "no-inline"), inline)]
178 #[must_use]
179 fn from(v: usize) -> Self {
180 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
181 }
182}
183
184impl<'borrow, 'tape, 'value> From<f32> for Value<'borrow, 'tape, 'value> {
186 #[cfg_attr(not(feature = "no-inline"), inline)]
187 #[must_use]
188 fn from(v: f32) -> Self {
189 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
190 }
191}
192
193impl<'borrow, 'tape, 'value> From<f64> for Value<'borrow, 'tape, 'value> {
194 #[cfg_attr(not(feature = "no-inline"), inline)]
195 #[must_use]
196 fn from(v: f64) -> Self {
197 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
198 }
199}
200
201impl<'borrow, 'tape, 'value, S> From<Vec<S>> for Value<'borrow, 'tape, 'value>
202where
203 borrowed::Value<'value>: From<Vec<S>>,
204{
205 #[cfg_attr(not(feature = "no-inline"), inline)]
206 #[must_use]
207 fn from(v: Vec<S>) -> Self {
208 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
209 }
210}
211
212impl<'borrow, 'tape, 'value, V: Into<borrowed::Value<'value>>> FromIterator<V>
213 for Value<'borrow, 'tape, 'value>
214{
215 #[cfg_attr(not(feature = "no-inline"), inline)]
216 #[must_use]
217 fn from_iter<I: IntoIterator<Item = V>>(v: I) -> Self {
218 Value::Value(StdCow::Owned(borrowed::Value::from_iter(v)))
219 }
220}
221
222impl<'borrow, 'tape, 'value, K: Into<Cow<'value, str>>, V: Into<borrowed::Value<'value>>>
223 FromIterator<(K, V)> for Value<'borrow, 'tape, 'value>
224{
225 #[cfg_attr(not(feature = "no-inline"), inline)]
226 #[must_use]
227 fn from_iter<I: IntoIterator<Item = (K, V)>>(v: I) -> Self {
228 Value::Value(StdCow::Owned(borrowed::Value::from_iter(v)))
229 }
230}
231
232impl<'borrow, 'tape, 'value> From<crate::borrowed::Object<'value>>
233 for Value<'borrow, 'tape, 'value>
234{
235 #[cfg_attr(not(feature = "no-inline"), inline)]
236 #[must_use]
237 fn from(v: crate::borrowed::Object<'value>) -> Self {
238 Value::Value(StdCow::Owned(borrowed::Value::from(v)))
239 }
240}