7 releases
0.1.6 | May 28, 2024 |
---|---|
0.1.5 | Sep 22, 2023 |
0.1.4 | Apr 13, 2023 |
0.1.3 | Oct 28, 2022 |
0.1.0 | Jan 31, 2022 |
#230 in Encoding
2,918 downloads per month
Used in 9 crates
(via icu_list)
14KB
222 lines
deduplicating_array
A serde serialization strategy that uses PartialEq
to reduce serialized size.
This create can be used with Serde derive like this:
#[derive(serde::Deserialize, serde::Serialize)]
pub struct Foo {
#[serde(with = "deduplicating_array")]
data: [Bar; 12],
// ...
}
Bar
s that are equal to a Bar
s that appears earlier in the array will not be serialized
(instead, the index of the first occurence is serialized). Deserialization clones the first
Bar
into all the indices where it occurs (hence Bar
has to implement Clone
).
Human readable serialization represents skipped values as singleton arrays containing the
target index, e.g. the Rust array ["Foo", "Bar", "Foo"]
will serialize to JSON ["Foo", "Bar", [0]]
.
This implies that singleton integer arrays cannot be used as array elements (they do work in Bincode, but there's really not much point in using them).
More Information
For more information on development, authorship, contributing etc. please visit ICU4X home page
.
Dependencies
~0.3–1MB
~22K SLoC