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