@@ -64,8 +64,10 @@ fn test_decode() {
64
64
c : 1024u32 ,
65
65
} ;
66
66
let slice = [ 5 , 10 , 251 , 0 , 4 ] ;
67
- let result: Test2 < u32 > = bincode:: decode_from_slice ( & slice, Configuration :: standard ( ) ) . unwrap ( ) ;
67
+ let ( result, len) : ( Test2 < u32 > , usize ) =
68
+ bincode:: decode_from_slice ( & slice, Configuration :: standard ( ) ) . unwrap ( ) ;
68
69
assert_eq ! ( result, start) ;
70
+ assert_eq ! ( len, 5 ) ;
69
71
}
70
72
71
73
#[ test]
@@ -79,8 +81,11 @@ fn test_encode_decode_str() {
79
81
let mut slice = [ 0u8 ; 100 ] ;
80
82
81
83
let len = bincode:: encode_into_slice ( & start, & mut slice, Configuration :: standard ( ) ) . unwrap ( ) ;
82
- let end: Test3 = bincode:: decode_from_slice ( & slice[ ..len] , Configuration :: standard ( ) ) . unwrap ( ) ;
84
+ assert_eq ! ( len, 12 ) ;
85
+ let ( end, len) : ( Test3 , usize ) =
86
+ bincode:: decode_from_slice ( & slice[ ..len] , Configuration :: standard ( ) ) . unwrap ( ) ;
83
87
assert_eq ! ( end, start) ;
88
+ assert_eq ! ( len, 12 ) ;
84
89
}
85
90
86
91
#[ test]
@@ -97,9 +102,10 @@ fn test_encode_tuple() {
97
102
fn test_decode_tuple ( ) {
98
103
let start = TestTupleStruct ( 5 , 10 , 1024 ) ;
99
104
let mut slice = [ 5 , 10 , 251 , 0 , 4 ] ;
100
- let result: TestTupleStruct =
105
+ let ( result, len ) : ( TestTupleStruct , usize ) =
101
106
bincode:: decode_from_slice ( & mut slice, Configuration :: standard ( ) ) . unwrap ( ) ;
102
107
assert_eq ! ( result, start) ;
108
+ assert_eq ! ( len, 5 ) ;
103
109
}
104
110
105
111
#[ test]
@@ -116,9 +122,10 @@ fn test_encode_enum_struct_variant() {
116
122
fn test_decode_enum_struct_variant ( ) {
117
123
let start = TestEnum :: Bar { name : 5u32 } ;
118
124
let mut slice = [ 1 , 5 ] ;
119
- let result: TestEnum =
125
+ let ( result, len ) : ( TestEnum , usize ) =
120
126
bincode:: decode_from_slice ( & mut slice, Configuration :: standard ( ) ) . unwrap ( ) ;
121
127
assert_eq ! ( result, start) ;
128
+ assert_eq ! ( len, 2 ) ;
122
129
}
123
130
124
131
#[ test]
@@ -135,9 +142,10 @@ fn test_encode_enum_tuple_variant() {
135
142
fn test_decode_enum_unit_variant ( ) {
136
143
let start = TestEnum :: Foo ;
137
144
let mut slice = [ 0 ] ;
138
- let result: TestEnum =
145
+ let ( result, len ) : ( TestEnum , usize ) =
139
146
bincode:: decode_from_slice ( & mut slice, Configuration :: standard ( ) ) . unwrap ( ) ;
140
147
assert_eq ! ( result, start) ;
148
+ assert_eq ! ( len, 1 ) ;
141
149
}
142
150
143
151
#[ test]
@@ -154,9 +162,10 @@ fn test_encode_enum_unit_variant() {
154
162
fn test_decode_enum_tuple_variant ( ) {
155
163
let start = TestEnum :: Baz ( 5 , 10 , 1024 ) ;
156
164
let mut slice = [ 2 , 5 , 10 , 251 , 0 , 4 ] ;
157
- let result: TestEnum =
165
+ let ( result, len ) : ( TestEnum , usize ) =
158
166
bincode:: decode_from_slice ( & mut slice, Configuration :: standard ( ) ) . unwrap ( ) ;
159
167
assert_eq ! ( result, start) ;
168
+ assert_eq ! ( len, 6 ) ;
160
169
}
161
170
162
171
#[ derive( bincode:: Decode , bincode:: Encode , PartialEq , Eq , Debug ) ]
@@ -185,7 +194,9 @@ fn test_c_style_enum() {
185
194
assert_eq ! ( ser( CStyleEnum :: E ) , 6 ) ;
186
195
187
196
fn de ( num : u8 ) -> Result < CStyleEnum , bincode:: error:: DecodeError > {
188
- bincode:: decode_from_slice ( & [ num] , Configuration :: standard ( ) )
197
+ let ( result, len) = bincode:: decode_from_slice ( & [ num] , Configuration :: standard ( ) ) ?;
198
+ assert_eq ! ( len, 1 ) ;
199
+ Ok ( result)
189
200
}
190
201
191
202
fn expected_err ( idx : u32 ) -> Result < CStyleEnum , bincode:: error:: DecodeError > {
0 commit comments