diff --git a/Cargo.lock b/Cargo.lock index 0ddd767f..15853d3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,27 +2,30 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bytes" version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + [[package]] name = "malloc_size_of" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d719de8b8f230028cf8192ae4c1b25267cd6b8a99d2747d345a70b8c81aa13" +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + [[package]] name = "proc-macro2" version = "1.0.107" @@ -70,14 +73,27 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + [[package]] name = "smallvec" version = "2.0.0-alpha.12" dependencies = [ - "bincode", "bytes", "malloc_size_of", "serde_core", + "serde_json", ] [[package]] @@ -96,3 +112,9 @@ name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/Cargo.toml b/Cargo.toml index a2a1b256..d16bf6f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ keywords = ["small", "vec", "vector", "stack", "no_std"] categories = ["data-structures"] readme = "README.md" documentation = "https://docs.rs/smallvec/" -include = ["Cargo.toml", "LICENSE-MIT", "LICENSE-APACHE", "README.md", "src/**/*.rs"] +exclude = [".gitignore", "tests/", "scripts/", "fuzz/", "benches/", ".github/"] [features] std = [] @@ -25,7 +25,7 @@ serde_core = { version = "1.0.221", optional = true, default-features = false } malloc_size_of = { version = "0.1.1", optional = true, default-features = false } [dev-dependencies] -bincode = "1.0.1" +serde_json = "1.0" [package.metadata.docs.rs] all-features = true diff --git a/README.md b/README.md index a485d2d5..e9b253c1 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ rust-smallvec > **⚠️ Note:** > This is the code for smallvec 2.0, which is not yet ready for release. For > details about the changes in version 2.0, please see [#183], [#240], and [#284]. +> The status of the v2 branch is tracked on [#425]. > > The source code for the latest smallvec 1.x.y release can be found on the > [v1 branch]. Bug fixes for smallvec 1 should be based on that branch, while @@ -13,6 +14,7 @@ rust-smallvec [#183]: https://github.com/servo/rust-smallvec/issues/183 [#240]: https://github.com/servo/rust-smallvec/issues/240 [#284]: https://github.com/servo/rust-smallvec/issues/284 +[#425]: https://github.com/servo/rust-smallvec/issues/425 ## About smallvec diff --git a/src/tests.rs b/src/tests.rs index a6db2c8b..bdbea33a 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -155,7 +155,7 @@ fn splice() { let new = [7, 8, 9, 10]; let u: SmallVec = v.splice(1..1, new).collect(); assert_eq!(v, [0, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6]); - assert_eq!(u, []); + assert_eq!(u, [0u8; 0]); // The range is at the beginning and nonempty. let mut v: SmallVec = smallvec![0, 1, 2, 3, 4, 5, 6]; @@ -328,7 +328,7 @@ fn test_split_off_take_all() { let orig_capacity: usize = vec.capacity(); let split_off = vec.split_off(0); - assert_eq!(&vec[..], &[]); + assert_eq!(&vec[..], &[0u32; 0]); assert_eq!(&split_off[..], &[1, 2, 3, 4, 5, 6]); assert_eq!(vec.capacity(), orig_capacity); assert_eq!(vec.as_ptr(), orig_ptr); @@ -538,7 +538,7 @@ fn test_from() { let vec = vec![]; let small_vec: SmallVec = SmallVec::from(vec); - assert_eq!(&*small_vec, &[]); + assert_eq!(&*small_vec, &[0u8; 0]); drop(small_vec); let vec = vec![1, 2, 3, 4, 5]; @@ -687,12 +687,12 @@ fn test_into_inner() { fn test_from_vec() { let vec = vec![]; let small_vec: SmallVec = SmallVec::from_vec(vec); - assert_eq!(&*small_vec, &[]); + assert_eq!(&*small_vec, &[0u8; 0]); drop(small_vec); let vec = vec![]; let small_vec: SmallVec = SmallVec::from_vec(vec); - assert_eq!(&*small_vec, &[]); + assert_eq!(&*small_vec, &[0u8; 0]); drop(small_vec); let vec = vec![1]; @@ -801,19 +801,26 @@ fn test_write() { #[cfg(feature = "serde")] #[test] fn test_serde() { - use bincode::{config, deserialize}; + use serde_core::{Serialize, Deserialize}; + use serde_json::{Serializer, Deserializer}; + let mut bytes = Vec::::new(); + let mut serializer = Serializer::new(&mut bytes); let mut small_vec: SmallVec = SmallVec::new(); small_vec.push(1); - let encoded = config().limit(100).serialize(&small_vec).unwrap(); - let decoded: SmallVec = deserialize(&encoded).unwrap(); + let _ = small_vec.serialize(&mut serializer); + let mut deserializer = Deserializer::from_slice(bytes.as_slice()); + let decoded: SmallVec = SmallVec::deserialize(&mut deserializer).unwrap(); assert_eq!(small_vec, decoded); - small_vec.push(2); // Spill the vec + small_vec.push(2); small_vec.push(3); small_vec.push(4); // Check again after spilling. - let encoded = config().limit(100).serialize(&small_vec).unwrap(); - let decoded: SmallVec = deserialize(&encoded).unwrap(); + let mut bytes = Vec::::new(); + let mut serializer = Serializer::new(&mut bytes); + let _ = small_vec.serialize(&mut serializer); + let mut deserializer = Deserializer::from_slice(bytes.as_slice()); + let decoded: SmallVec = SmallVec::deserialize(&mut deserializer).unwrap(); assert_eq!(small_vec, decoded); }