Skip to content

Commit c528671

Browse files
committed
Add owned value
Signed-off-by: Heinz N. Gies <heinz@licenser.net>
1 parent 5259c2a commit c528671

File tree

7 files changed

+26
-26
lines changed

7 files changed

+26
-26
lines changed

src/macros.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -419,11 +419,11 @@ macro_rules! json_internal_owned {
419419
};
420420

421421
([]) => {
422-
$crate::value::owned::Value::Array(json_internal_vec![])
422+
$crate::value::owned::Value::Array(Box::new(json_internal_vec![]))
423423
};
424424

425425
([ $($tt:tt)+ ]) => {
426-
$crate::value::owned::Value::Array(json_internal_owned!(@array [] $($tt)+))
426+
$crate::value::owned::Value::Array(Box::new(json_internal_owned!(@array [] $($tt)+)))
427427
};
428428

429429
({}) => {

src/serde/value/owned/de.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ impl<'de> Visitor<'de> for ValueVisitor {
486486
while let Some(e) = seq.next_element()? {
487487
v.push(e);
488488
}
489-
Ok(Value::Array(v))
489+
Ok(Value::Array(Box::new(v)))
490490
}
491491
}
492492

src/serde/value/owned/se.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl Serialize for Value {
2828
Value::String(s) => serializer.serialize_str(s),
2929
Value::Array(v) => {
3030
let mut seq = serializer.serialize_seq(Some(v.len()))?;
31-
for e in v {
31+
for e in v.as_ref() {
3232
seq.serialize_element(e)?;
3333
}
3434
seq.end()
@@ -284,7 +284,7 @@ impl serde::ser::SerializeSeq for SerializeVec {
284284
}
285285

286286
fn end(self) -> Result<Value> {
287-
Ok(Value::Array(self.vec))
287+
Ok(Value::Array(Box::new(self.vec)))
288288
}
289289
}
290290

@@ -334,7 +334,7 @@ impl serde::ser::SerializeTupleVariant for SerializeTupleVariant {
334334

335335
fn end(self) -> Result<Value> {
336336
let mut object = Object::with_capacity_and_hasher(1, ObjectHasher::default());
337-
object.insert_nocheck(self.name, Value::Array(self.vec));
337+
object.insert_nocheck(self.name, Value::Array(Box::new(self.vec)));
338338
Ok(Value::from(object))
339339
}
340340
}

src/tests/serde.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ fn empty_array() {
195195
let d = unsafe { d.as_bytes_mut() };
196196
let v_serde: serde_json::Value = serde_json::from_slice(d).expect("parse_serde");
197197
let v_simd: serde_json::Value = from_slice(d).expect("parse_simd");
198-
assert_eq!(to_value(d1), Ok(Value::Array(vec![])));
198+
assert_eq!(to_value(d1), Ok(Value::array()));
199199
assert_eq!(v_simd, v_serde);
200200
}
201201

@@ -225,7 +225,7 @@ fn double_array() {
225225
let d = unsafe { d.as_bytes_mut() };
226226
let v_serde: serde_json::Value = serde_json::from_slice(d).expect("parse_serde");
227227
let v_simd: serde_json::Value = from_slice(d).expect("parse_simd");
228-
assert_eq!(to_value(d1), Ok(Value::Array(vec![Value::Array(vec![])])));
228+
assert_eq!(to_value(d1), Ok(Value::from(vec![Value::array()])));
229229
assert_eq!(v_simd, v_serde);
230230
}
231231

@@ -239,8 +239,8 @@ fn null_null_array() {
239239
let v_simd: serde_json::Value = from_slice(d).expect("parse_simd");
240240
assert_eq!(
241241
to_value(d1),
242-
Ok(Value::Array(vec![
243-
Value::Array(vec![]),
242+
Ok(Value::from(vec![
243+
Value::array(),
244244
Value::Static(StaticNode::Null),
245245
Value::Static(StaticNode::Null),
246246
]))
@@ -254,7 +254,7 @@ fn one_element_array() {
254254
let mut d1 = d.clone();
255255
let d1 = unsafe { d1.as_bytes_mut() };
256256
let d = unsafe { d.as_bytes_mut() };
257-
assert_eq!(to_value(d1), Ok(Value::Array(vec![Value::from("snot")])));
257+
assert_eq!(to_value(d1), Ok(Value::from(vec![Value::from("snot")])));
258258
let v_serde: serde_json::Value = serde_json::from_slice(d).expect("");
259259
let v_simd: serde_json::Value = from_slice(d).expect("");
260260
assert_eq!(v_simd, v_serde);
@@ -268,7 +268,7 @@ fn two_element_array() {
268268
let d = unsafe { d.as_bytes_mut() };
269269
assert_eq!(
270270
to_value(d1),
271-
Ok(Value::Array(vec![
271+
Ok(Value::from(vec![
272272
Value::from("snot"),
273273
Value::from("badger")
274274
]))
@@ -289,7 +289,7 @@ fn list() {
289289
assert_eq!(v_simd, v_serde);
290290
assert_eq!(
291291
to_value(d1),
292-
Ok(Value::Array(vec![
292+
Ok(Value::from(vec![
293293
Value::from(42),
294294
Value::from(23.0),
295295
Value::from("snot badger")
@@ -305,9 +305,9 @@ fn nested_list1() {
305305
let d = unsafe { d.as_bytes_mut() };
306306
assert_eq!(
307307
to_value(d1),
308-
Ok(Value::Array(vec![
308+
Ok(Value::from(vec![
309309
Value::from(42),
310-
Value::Array(vec![Value::from(23.0), Value::from("snot")]),
310+
Value::from(vec![Value::from(23.0), Value::from("snot")]),
311311
Value::from("bad"),
312312
Value::from("ger")
313313
]))
@@ -366,7 +366,7 @@ fn odd_array() {
366366
assert_eq!(v_simd, v_serde);
367367
assert_eq!(
368368
to_value(d1),
369-
Ok(Value::Array(vec![
369+
Ok(Value::from(vec![
370370
Value::from(Object::default()),
371371
Value::Static(StaticNode::Null)
372372
]))
@@ -420,7 +420,7 @@ fn null_null() {
420420
let d = unsafe { d.as_bytes_mut() };
421421
assert_eq!(
422422
to_value(d1),
423-
Ok(Value::Array(vec![
423+
Ok(Value::from(vec![
424424
Value::Static(StaticNode::Null),
425425
Value::Static(StaticNode::Null),
426426
]))
@@ -438,7 +438,7 @@ fn nested_null() {
438438
let d = unsafe { d.as_bytes_mut() };
439439
assert_eq!(
440440
to_value(d1),
441-
Ok(Value::Array(vec![Value::Array(vec![
441+
Ok(Value::from(vec![Value::from(vec![
442442
Value::Static(StaticNode::Null),
443443
Value::Static(StaticNode::Null),
444444
])]))
@@ -460,7 +460,7 @@ fn nestednested_null() {
460460
assert_eq!(v_simd, v_serde);
461461
assert_eq!(
462462
to_value(d1),
463-
Ok(Value::Array(vec![Value::Array(vec![Value::Array(vec![
463+
Ok(Value::from(vec![Value::from(vec![Value::from(vec![
464464
Value::Static(StaticNode::Null),
465465
Value::Static(StaticNode::Null),
466466
])])]))

src/value/owned.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ pub enum Value {
7878
/// string type
7979
String(String),
8080
/// array type
81-
Array(Vec<Value>),
81+
Array(Box<Vec<Value>>),
8282
/// object type
8383
Object(Box<Object>),
8484
}
@@ -101,7 +101,7 @@ impl<'input> ValueBuilder<'input> for Value {
101101
#[cfg_attr(not(feature = "no-inline"), inline)]
102102
#[must_use]
103103
fn array_with_capacity(capacity: usize) -> Self {
104-
Self::Array(Vec::with_capacity(capacity))
104+
Self::Array(Box::new(Vec::with_capacity(capacity)))
105105
}
106106
#[cfg_attr(not(feature = "no-inline"), inline)]
107107
#[must_use]
@@ -244,7 +244,7 @@ impl ValueIntoArray for Value {
244244

245245
fn into_array(self) -> Option<<Value as ValueIntoArray>::Array> {
246246
match self {
247-
Self::Array(a) => Some(a),
247+
Self::Array(a) => Some(*a),
248248
_ => None,
249249
}
250250
}
@@ -345,7 +345,7 @@ impl<'de> OwnedDeserializer<'de> {
345345
}
346346
res.set_len(len);
347347
}
348-
Value::Array(res)
348+
Value::Array(Box::new(res))
349349
}
350350

351351
#[cfg_attr(not(feature = "no-inline"), inline)]
@@ -825,7 +825,7 @@ mod test {
825825
|inner| {
826826
prop_oneof![
827827
// Take the inner strategy and make the two recursive cases.
828-
prop::collection::vec(inner.clone(), 0..10).prop_map(Value::Array),
828+
prop::collection::vec(inner.clone(), 0..10).prop_map(Value::from),
829829
prop::collection::hash_map(".*", inner, 0..10)
830830
.prop_map(|m| m.into_iter().collect()),
831831
]

src/value/owned/cmp.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ impl PartialEq<BorrowedValue<'_>> for Value {
99
match (self, other) {
1010
(Self::Static(s1), BorrowedValue::Static(s2)) => s1 == s2,
1111
(Self::String(v1), BorrowedValue::String(v2)) => v1.eq(v2),
12-
(Self::Array(v1), BorrowedValue::Array(v2)) => v1.eq(v2.as_ref()),
12+
(Self::Array(v1), BorrowedValue::Array(v2)) => v1.as_ref().eq(v2.as_ref()),
1313
(Self::Object(v1), BorrowedValue::Object(v2)) => {
1414
if v1.len() != v2.len() {
1515
return false;

src/value/owned/from.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ impl<V: Into<Value>> FromIterator<V> for Value {
217217
#[cfg_attr(not(feature = "no-inline"), inline)]
218218
#[must_use]
219219
fn from_iter<I: IntoIterator<Item = V>>(iter: I) -> Self {
220-
Self::Array(iter.into_iter().map(Into::into).collect())
220+
Self::Array(Box::new(iter.into_iter().map(Into::into).collect()))
221221
}
222222
}
223223

0 commit comments

Comments
 (0)