Skip to content

Commit 108e03b

Browse files
Made config::standard() implement .write_fixed_array_header() by default (#509)
* Made config::standard() implement .write_fixed_array_header() by default * Fixed failing unit test * Fixed formatting
1 parent 21eebcb commit 108e03b

File tree

5 files changed

+33
-68
lines changed

5 files changed

+33
-68
lines changed

src/config.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ use core::marker::PhantomData;
3939
/// [skip_fixed_array_length]: #method.skip_fixed_array_length
4040
/// [write_fixed_array_length]: #method.write_fixed_array_length
4141
#[derive(Copy, Clone)]
42-
pub struct Configuration<E = LittleEndian, I = Varint, A = SkipFixedArrayLength, L = NoLimit> {
42+
pub struct Configuration<E = LittleEndian, I = Varint, A = WriteFixedArrayLength, L = NoLimit> {
4343
_e: PhantomData<E>,
4444
_i: PhantomData<I>,
4545
_a: PhantomData<A>,
@@ -49,7 +49,7 @@ pub struct Configuration<E = LittleEndian, I = Varint, A = SkipFixedArrayLength,
4949
/// The default config for bincode 2.0. By default this will be:
5050
/// - Little endian
5151
/// - Variable int encoding
52-
/// - Skip fixed array length
52+
/// - Write fixed array length
5353
pub const fn standard() -> Configuration {
5454
generate()
5555
}

tests/basic_types.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,15 @@ fn test_array() {
212212
let mut buffer = [0u8; 32];
213213
let input: [u8; 10] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
214214
bincode::encode_into_slice(input, &mut buffer, bincode::config::standard()).unwrap();
215-
assert_eq!(&buffer[..10], &[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]);
215+
assert_eq!(
216+
&buffer[..11],
217+
&[10, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
218+
);
216219

217220
let (output, len): ([u8; 10], usize) =
218-
bincode::decode_from_slice(&mut buffer[..10], bincode::config::standard()).unwrap();
221+
bincode::decode_from_slice(&mut buffer[..11], bincode::config::standard()).unwrap();
219222
assert_eq!(input, output);
220-
assert_eq!(len, 10);
223+
assert_eq!(len, 11);
221224

222225
let mut buffer = [0u8; 32];
223226
let input: [u8; 1] = [1];

tests/issues/issue_474.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ impl MemCache {
6262
where
6363
T: Send + Sync + serde_incl::Serialize,
6464
{
65-
let config = bincode::config::standard().write_fixed_array_length();
65+
let config = bincode::config::standard();
6666
let mut guard = self.cache.write().unwrap();
6767

6868
let encoded = bincode::serde::encode_to_vec(&cache_data, config)?;
@@ -76,7 +76,7 @@ impl MemCache {
7676
where
7777
T: Send + Sync + DeserializeOwned,
7878
{
79-
let config = bincode::config::standard().write_fixed_array_length();
79+
let config = bincode::config::standard();
8080
let guard = self.cache.read().unwrap();
8181
let cache_item = guard.get(key).unwrap();
8282
let (decoded, _len): (T, usize) =

tests/serde.rs

+19-53
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,12 @@ fn test_serde_round_trip() {
2424
assert_eq!(result.b, 0);
2525

2626
// validate bincode working
27-
let bytes = bincode::encode_to_vec(
28-
SerdeRoundtrip { a: 15, b: 15 },
29-
bincode::config::standard().write_fixed_array_length(),
30-
)
31-
.unwrap();
27+
let bytes =
28+
bincode::encode_to_vec(SerdeRoundtrip { a: 15, b: 15 }, bincode::config::standard())
29+
.unwrap();
3230
assert_eq!(bytes, &[15, 15]);
33-
let (result, len): (SerdeRoundtrip, usize) = bincode::decode_from_slice(
34-
&bytes,
35-
bincode::config::standard().write_fixed_array_length(),
36-
)
37-
.unwrap();
31+
let (result, len): (SerdeRoundtrip, usize) =
32+
bincode::decode_from_slice(&bytes, bincode::config::standard()).unwrap();
3833
assert_eq!(result.a, 15);
3934
assert_eq!(result.b, 15);
4035
assert_eq!(len, 2);
@@ -66,28 +61,17 @@ fn test_serialize_deserialize_borrowed_data() {
6661
];
6762

6863
let mut result = [0u8; 20];
69-
let len = bincode::serde::encode_into_slice(
70-
&input,
71-
&mut result,
72-
bincode::config::standard().write_fixed_array_length(),
73-
)
74-
.unwrap();
64+
let len = bincode::serde::encode_into_slice(&input, &mut result, bincode::config::standard())
65+
.unwrap();
7566
let result = &result[..len];
7667
assert_eq!(result, expected);
7768

78-
let result = bincode::serde::encode_to_vec(
79-
&input,
80-
bincode::config::standard().write_fixed_array_length(),
81-
)
82-
.unwrap();
69+
let result = bincode::serde::encode_to_vec(&input, bincode::config::standard()).unwrap();
8370

8471
assert_eq!(result, expected);
8572

86-
let output: SerdeWithBorrowedData = bincode::serde::decode_borrowed_from_slice(
87-
&result,
88-
bincode::config::standard().write_fixed_array_length(),
89-
)
90-
.unwrap();
73+
let output: SerdeWithBorrowedData =
74+
bincode::serde::decode_borrowed_from_slice(&result, bincode::config::standard()).unwrap();
9175
assert_eq!(
9276
SerdeWithBorrowedData {
9377
b: 0, // remember: b is skipped
@@ -123,28 +107,17 @@ fn test_serialize_deserialize_owned_data() {
123107
];
124108

125109
let mut result = [0u8; 20];
126-
let len = bincode::serde::encode_into_slice(
127-
&input,
128-
&mut result,
129-
bincode::config::standard().write_fixed_array_length(),
130-
)
131-
.unwrap();
110+
let len = bincode::serde::encode_into_slice(&input, &mut result, bincode::config::standard())
111+
.unwrap();
132112
let result = &result[..len];
133113
assert_eq!(result, expected);
134114

135-
let result = bincode::serde::encode_to_vec(
136-
&input,
137-
bincode::config::standard().write_fixed_array_length(),
138-
)
139-
.unwrap();
115+
let result = bincode::serde::encode_to_vec(&input, bincode::config::standard()).unwrap();
140116

141117
assert_eq!(result, expected);
142118

143-
let (output, len): (SerdeWithOwnedData, usize) = bincode::serde::decode_from_slice(
144-
&result,
145-
bincode::config::standard().write_fixed_array_length(),
146-
)
147-
.unwrap();
119+
let (output, len): (SerdeWithOwnedData, usize) =
120+
bincode::serde::decode_from_slice(&result, bincode::config::standard()).unwrap();
148121
assert_eq!(
149122
SerdeWithOwnedData {
150123
b: 0, // remember: b is skipped
@@ -188,19 +161,12 @@ mod derive {
188161
T: bincode::Encode + bincode::Decode + PartialEq + core::fmt::Debug,
189162
{
190163
let mut slice = [0u8; 100];
191-
let len = bincode::encode_into_slice(
192-
&start,
193-
&mut slice,
194-
bincode::config::standard().write_fixed_array_length(),
195-
)
196-
.unwrap();
164+
let len = bincode::encode_into_slice(&start, &mut slice, bincode::config::standard())
165+
.unwrap();
197166
assert_eq!(len, expected_len);
198167
let slice = &slice[..len];
199-
let (result, len): (T, usize) = bincode::decode_from_slice(
200-
&slice,
201-
bincode::config::standard().write_fixed_array_length(),
202-
)
203-
.unwrap();
168+
let (result, len): (T, usize) =
169+
bincode::decode_from_slice(&slice, bincode::config::standard()).unwrap();
204170

205171
assert_eq!(start, result);
206172
assert_eq!(len, expected_len);

tests/utils.rs

+4-8
Original file line numberDiff line numberDiff line change
@@ -86,32 +86,28 @@ where
8686
&element,
8787
bincode::config::standard()
8888
.with_little_endian()
89-
.with_fixed_int_encoding()
90-
.write_fixed_array_length(),
89+
.with_fixed_int_encoding(),
9190
&cmp,
9291
);
9392
the_same_with_config(
9493
&element,
9594
bincode::config::standard()
9695
.with_big_endian()
97-
.with_fixed_int_encoding()
98-
.write_fixed_array_length(),
96+
.with_fixed_int_encoding(),
9997
&cmp,
10098
);
10199
the_same_with_config(
102100
&element,
103101
bincode::config::standard()
104102
.with_little_endian()
105-
.with_variable_int_encoding()
106-
.write_fixed_array_length(),
103+
.with_variable_int_encoding(),
107104
&cmp,
108105
);
109106
the_same_with_config(
110107
&element,
111108
bincode::config::standard()
112109
.with_big_endian()
113-
.with_variable_int_encoding()
114-
.write_fixed_array_length(),
110+
.with_variable_int_encoding(),
115111
&cmp,
116112
);
117113
}

0 commit comments

Comments
 (0)