Skip to content

Commit 5259c2a

Browse files
committed
test boxed vec
Signed-off-by: Heinz Gies <heinz@licenser.net>
1 parent a07024d commit 5259c2a

File tree

6 files changed

+21
-16
lines changed

6 files changed

+21
-16
lines changed

src/macros.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -904,11 +904,11 @@ macro_rules! json_internal_borrowed {
904904
};
905905

906906
([]) => {
907-
$crate::value::borrowed::Value::Array(json_internal_vec![])
907+
$crate::value::borrowed::Value::Array(Box::new(json_internal_vec![]))
908908
};
909909

910910
([ $($tt:tt)+ ]) => {
911-
$crate::value::borrowed::Value::Array(json_internal_borrowed!(@array [] $($tt)+))
911+
$crate::value::borrowed::Value::Array(Box::new(json_internal_borrowed!(@array [] $($tt)+)))
912912
};
913913

914914
({}) => {

src/serde/value/borrowed/de.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ impl<'de> Visitor<'de> for ValueVisitor {
499499
while let Some(e) = seq.next_element()? {
500500
v.push(e);
501501
}
502-
Ok(Value::Array(v))
502+
Ok(Value::Array(Box::new(v)))
503503
}
504504
}
505505

src/serde/value/borrowed/se.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ impl<'value> Serialize for Value<'value> {
3131
Value::String(s) => serializer.serialize_str(s),
3232
Value::Array(v) => {
3333
let mut seq = serializer.serialize_seq(Some(v.len()))?;
34-
for e in v {
34+
for e in v.as_ref() {
3535
seq.serialize_element(e)?;
3636
}
3737
seq.end()
@@ -298,7 +298,7 @@ impl<'se> serde::ser::SerializeSeq for SerializeVec<'se> {
298298
}
299299

300300
fn end(self) -> Result<Value<'se>> {
301-
Ok(Value::Array(self.vec))
301+
Ok(Value::Array(Box::new(self.vec)))
302302
}
303303
}
304304

@@ -348,7 +348,7 @@ impl<'se> serde::ser::SerializeTupleVariant for SerializeTupleVariant<'se> {
348348

349349
fn end(self) -> Result<Value<'se>> {
350350
let mut object = Object::with_capacity_and_hasher(1, ObjectHasher::default());
351-
object.insert_nocheck(self.name.into(), Value::Array(self.vec));
351+
object.insert_nocheck(self.name.into(), Value::Array(Box::new(self.vec)));
352352

353353
Ok(Value::Object(Box::new(object)))
354354
}
@@ -654,10 +654,10 @@ mod test {
654654

655655
#[test]
656656
fn arr() {
657-
let v = Value::Array(vec![
657+
let v = Value::Array(Box::new(vec![
658658
Value::Static(StaticNode::I64(42)),
659659
Value::Static(StaticNode::I64(23)),
660-
]);
660+
]));
661661
let s = serde_json::to_string(&v).expect("Failed to serialize");
662662
assert_eq!(s, "[42,23]");
663663
}

src/value/borrowed.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ pub enum Value<'value> {
8181
/// string type
8282
String(Cow<'value, str>),
8383
/// array type
84-
Array(Vec<Value<'value>>),
84+
Array(Box<Vec<Value<'value>>>),
8585
/// object type
8686
Object(Box<Object<'value>>),
8787
}
@@ -165,7 +165,7 @@ impl<'value> ValueBuilder<'value> for Value<'value> {
165165
#[cfg_attr(not(feature = "no-inline"), inline)]
166166
#[must_use]
167167
fn array_with_capacity(capacity: usize) -> Self {
168-
Self::Array(Vec::with_capacity(capacity))
168+
Self::Array(Box::new(Vec::with_capacity(capacity)))
169169
}
170170
#[cfg_attr(not(feature = "no-inline"), inline)]
171171
#[must_use]
@@ -331,7 +331,7 @@ impl<'value> ValueIntoArray for Value<'value> {
331331

332332
fn into_array(self) -> Option<<Self as ValueIntoArray>::Array> {
333333
match self {
334-
Self::Array(a) => Some(a),
334+
Self::Array(a) => Some(*a),
335335
_ => None,
336336
}
337337
}
@@ -432,7 +432,7 @@ impl<'de> BorrowDeserializer<'de> {
432432
}
433433
res.set_len(len);
434434
}
435-
Value::Array(res)
435+
Value::Array(Box::new(res))
436436
}
437437

438438
#[cfg_attr(not(feature = "no-inline"), inline)]
@@ -492,7 +492,7 @@ impl<'tape, 'de> BorrowSliceDeserializer<'tape, 'de> {
492492
}
493493
res.set_len(len);
494494
}
495-
Value::Array(res)
495+
Value::Array(Box::new(res))
496496
}
497497

498498
#[cfg_attr(not(feature = "no-inline"), inline)]
@@ -980,7 +980,7 @@ mod test {
980980
|inner| {
981981
prop_oneof![
982982
// Take the inner strategy and make the two recursive cases.
983-
prop::collection::vec(inner.clone(), 0..10).prop_map(Value::Array),
983+
prop::collection::vec(inner.clone(), 0..10).prop_map(Value::from),
984984
prop::collection::hash_map(".*".prop_map(Cow::from), inner, 0..10)
985985
.prop_map(|m| m.into_iter().collect()),
986986
]
@@ -1129,4 +1129,9 @@ mod test {
11291129
let v: Value = v.into();
11301130
assert_eq!(v, 42);
11311131
}
1132+
1133+
// #[test]
1134+
// fn size() {
1135+
// assert_eq!(std::mem::size_of::<Value>(), 24);
1136+
// }
11321137
}

src/value/borrowed/from.rs

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

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),
12+
(Self::Array(v1), BorrowedValue::Array(v2)) => v1.eq(v2.as_ref()),
1313
(Self::Object(v1), BorrowedValue::Object(v2)) => {
1414
if v1.len() != v2.len() {
1515
return false;

0 commit comments

Comments
 (0)