@@ -22,38 +22,21 @@ const SIZE: usize = compact_size::MAX_ENCODING_SIZE;
2222/// An encoder for a single byte slice.
2323pub struct BytesEncoder < ' sl > {
2424 sl : Option < & ' sl [ u8 ] > ,
25- compact_size : Option < ArrayVec < u8 , SIZE > > ,
2625}
2726
2827impl < ' sl > BytesEncoder < ' sl > {
2928 /// Constructs a byte encoder which encodes the given byte slice, with no length prefix.
3029 pub fn without_length_prefix ( sl : & ' sl [ u8 ] ) -> Self {
31- Self { sl : Some ( sl) , compact_size : None }
32- }
33-
34- /// Constructs a byte encoder which encodes the given byte slice, with the length prefix.
35- pub fn with_length_prefix ( sl : & ' sl [ u8 ] ) -> Self {
36- Self { sl : Some ( sl) , compact_size : Some ( compact_size:: encode ( sl. len ( ) ) ) }
30+ Self { sl : Some ( sl) }
3731 }
3832}
3933
4034impl Encoder for BytesEncoder < ' _ > {
41- fn current_chunk ( & self ) -> Option < & [ u8 ] > {
42- if let Some ( compact_size) = self . compact_size . as_ref ( ) {
43- Some ( compact_size)
44- } else {
45- self . sl
46- }
47- }
35+ fn current_chunk ( & self ) -> Option < & [ u8 ] > { self . sl }
4836
4937 fn advance ( & mut self ) -> bool {
50- if self . compact_size . is_some ( ) {
51- self . compact_size = None ;
52- true
53- } else {
54- self . sl = None ;
55- false
56- }
38+ self . sl = None ;
39+ false
5740 }
5841}
5942
@@ -275,7 +258,7 @@ impl Encoder for CompactSizeEncoder {
275258mod tests {
276259 use super :: * ;
277260
278- struct TestBytes < ' a > ( & ' a [ u8 ] , bool ) ;
261+ struct TestBytes < ' a > ( & ' a [ u8 ] ) ;
279262
280263 impl < ' a > Encodable for TestBytes < ' a > {
281264 type Encoder < ' s >
@@ -284,11 +267,7 @@ mod tests {
284267 Self : ' s ;
285268
286269 fn encoder ( & self ) -> Self :: Encoder < ' _ > {
287- if self . 1 {
288- BytesEncoder :: with_length_prefix ( self . 0 )
289- } else {
290- BytesEncoder :: without_length_prefix ( self . 0 )
291- }
270+ BytesEncoder :: without_length_prefix ( self . 0 )
292271 }
293272 }
294273
@@ -327,7 +306,7 @@ mod tests {
327306 fn encode_byte_slice_without_prefix ( ) {
328307 // Should have one chunk with the byte data, then exhausted.
329308 let obj = [ 1u8 , 2 , 3 ] ;
330- let test_bytes = TestBytes ( & obj, false ) ;
309+ let test_bytes = TestBytes ( & obj) ;
331310 let mut encoder = test_bytes. encoder ( ) ;
332311
333312 assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 1u8 , 2 , 3 ] [ ..] ) ) ;
@@ -339,41 +318,14 @@ mod tests {
339318 fn encode_empty_byte_slice_without_prefix ( ) {
340319 // Should have one empty chunk, then exhausted.
341320 let obj = [ ] ;
342- let test_bytes = TestBytes ( & obj, false ) ;
321+ let test_bytes = TestBytes ( & obj) ;
343322 let mut encoder = test_bytes. encoder ( ) ;
344323
345324 assert_eq ! ( encoder. current_chunk( ) , Some ( & [ ] [ ..] ) ) ;
346325 assert ! ( !encoder. advance( ) ) ;
347326 assert_eq ! ( encoder. current_chunk( ) , None ) ;
348327 }
349328
350- #[ test]
351- fn encode_byte_slice_with_prefix ( ) {
352- // Should have length prefix chunk, then data chunk, then exhausted.
353- let obj = [ 1u8 , 2 , 3 ] ;
354- let test_bytes = TestBytes ( & obj, true ) ;
355- let mut encoder = test_bytes. encoder ( ) ;
356-
357- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 3u8 ] [ ..] ) ) ;
358- assert ! ( encoder. advance( ) ) ;
359- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 1u8 , 2 , 3 ] [ ..] ) ) ;
360- assert ! ( !encoder. advance( ) ) ;
361- assert_eq ! ( encoder. current_chunk( ) , None ) ;
362- }
363-
364- #[ test]
365- fn encode_empty_byte_slice_with_prefix ( ) {
366- // Should have length prefix chunk (0), then empty data chunk, then exhausted.
367- let obj = [ ] ;
368- let test_bytes = TestBytes ( & obj, true ) ;
369- let mut encoder = test_bytes. encoder ( ) ;
370-
371- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0u8 ] [ ..] ) ) ;
372- assert ! ( encoder. advance( ) ) ;
373- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ ] [ ..] ) ) ;
374- assert ! ( !encoder. advance( ) ) ;
375- assert_eq ! ( encoder. current_chunk( ) , None ) ;
376- }
377329
378330 #[ test]
379331 fn encode_slice_with_elements ( ) {
@@ -444,22 +396,6 @@ mod tests {
444396 assert_eq ! ( encoder. current_chunk( ) , None ) ;
445397 }
446398
447- #[ test]
448- fn encode_two_byte_slices_mixed ( ) {
449- // Should encode byte slice without prefix, then with prefix, then exhausted.
450- let enc1 = TestBytes ( & [ 0xAA , 0xBB ] , false ) . encoder ( ) ;
451- let enc2 = TestBytes ( & [ 0xCC ] , true ) . encoder ( ) ;
452- let mut encoder = Encoder2 :: new ( enc1, enc2) ;
453-
454- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0xAA , 0xBB ] [ ..] ) ) ;
455- assert ! ( encoder. advance( ) ) ;
456- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 1u8 ] [ ..] ) ) ;
457- assert ! ( encoder. advance( ) ) ;
458- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0xCC ] [ ..] ) ) ;
459- assert ! ( !encoder. advance( ) ) ;
460- assert_eq ! ( encoder. current_chunk( ) , None ) ;
461- }
462-
463399 #[ test]
464400 fn encode_three_arrays ( ) {
465401 // Should encode three arrays in sequence, then exhausted.
@@ -525,13 +461,11 @@ mod tests {
525461
526462 #[ test]
527463 fn encode_mixed_composition_with_byte_slices ( ) {
528- // Should encode byte slice with prefix , then array, then exhausted.
529- let enc1 = TestBytes ( & [ 0xFF , 0xEE ] , true ) . encoder ( ) ;
464+ // Should encode byte slice, then array, then exhausted.
465+ let enc1 = TestBytes ( & [ 0xFF , 0xEE ] ) . encoder ( ) ;
530466 let enc2 = TestArray ( [ 0xDD , 0xCC ] ) . encoder ( ) ;
531467 let mut encoder = Encoder2 :: new ( enc1, enc2) ;
532468
533- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 2u8 ] [ ..] ) ) ;
534- assert ! ( encoder. advance( ) ) ;
535469 assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0xFF , 0xEE ] [ ..] ) ) ;
536470 assert ! ( encoder. advance( ) ) ;
537471 assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0xDD , 0xCC ] [ ..] ) ) ;
@@ -627,35 +561,13 @@ mod tests {
627561 assert_eq ! ( encoder. current_chunk( ) , None ) ;
628562 }
629563
630- #[ test]
631- fn encode_slice_with_mixed_byte_encoders ( ) {
632- // Should encode slice of mixed byte encoders with different prefix settings, then exhausted.
633- let bytes1 = TestBytes ( & [ 0x11 , 0x12 ] , false ) ;
634- let bytes2 = TestBytes ( & [ 0x21 , 0x22 , 0x23 ] , true ) ;
635- let bytes3 = TestBytes ( & [ ] , false ) ;
636- let slice = & [ bytes1, bytes2, bytes3] ;
637- let mut encoder = SliceEncoder :: with_length_prefix ( slice) ;
638-
639- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 3u8 ] [ ..] ) ) ;
640- assert ! ( encoder. advance( ) ) ;
641- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0x11 , 0x12 ] [ ..] ) ) ;
642- assert ! ( encoder. advance( ) ) ;
643- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 3u8 ] [ ..] ) ) ;
644- assert ! ( encoder. advance( ) ) ;
645- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0x21 , 0x22 , 0x23 ] [ ..] ) ) ;
646- assert ! ( encoder. advance( ) ) ;
647- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ ] [ ..] ) ) ;
648- assert ! ( !encoder. advance( ) ) ;
649- assert_eq ! ( encoder. current_chunk( ) , None ) ;
650- }
651-
652564 #[ test]
653565 fn encode_complex_nested_structure ( ) {
654566 // Should encode header, slice with elements, and footer with prefix, then exhausted.
655- let header = TestBytes ( & [ 0xDE , 0xAD ] , false ) . encoder ( ) ;
567+ let header = TestBytes ( & [ 0xDE , 0xAD ] ) . encoder ( ) ;
656568 let data_slice = & [ TestArray ( [ 0x01 , 0x02 ] ) , TestArray ( [ 0x03 , 0x04 ] ) ] ;
657569 let slice_enc = SliceEncoder :: with_length_prefix ( data_slice) ;
658- let footer = TestBytes ( & [ 0xBE , 0xEF ] , true ) . encoder ( ) ;
570+ let footer = TestBytes ( & [ 0xBE , 0xEF ] ) . encoder ( ) ;
659571 let mut encoder = Encoder3 :: new ( header, slice_enc, footer) ;
660572
661573 assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0xDE , 0xAD ] [ ..] ) ) ;
@@ -666,8 +578,6 @@ mod tests {
666578 assert ! ( encoder. advance( ) ) ;
667579 assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0x03 , 0x04 ] [ ..] ) ) ;
668580 assert ! ( encoder. advance( ) ) ;
669- assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 2u8 ] [ ..] ) ) ;
670- assert ! ( encoder. advance( ) ) ;
671581 assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0xBE , 0xEF ] [ ..] ) ) ;
672582 assert ! ( !encoder. advance( ) ) ;
673583 assert_eq ! ( encoder. current_chunk( ) , None ) ;
0 commit comments