@@ -443,10 +443,10 @@ impl ExactSizeIterator for ToUppercase {}
443
443
444
444
#[ derive( Debug , Clone ) ]
445
445
enum CaseMappingIter {
446
- Three ( char , char , char ) ,
447
- Two ( char , char ) ,
448
- One ( char ) ,
449
446
Zero ,
447
+ One ( char ) ,
448
+ Two ( [ char ; 2 ] ) ,
449
+ Three ( [ char ; 3 ] ) ,
450
450
}
451
451
452
452
impl CaseMappingIter {
@@ -455,10 +455,10 @@ impl CaseMappingIter {
455
455
if chars[ 1 ] == '\0' {
456
456
CaseMappingIter :: One ( chars[ 0 ] ) // Including if chars[0] == '\0'
457
457
} else {
458
- CaseMappingIter :: Two ( chars[ 0 ] , chars[ 1 ] )
458
+ CaseMappingIter :: Two ( [ chars[ 0 ] , chars[ 1 ] ] )
459
459
}
460
460
} else {
461
- CaseMappingIter :: Three ( chars[ 0 ] , chars[ 1 ] , chars[ 2 ] )
461
+ CaseMappingIter :: Three ( [ chars[ 0 ] , chars[ 1 ] , chars[ 2 ] ] )
462
462
}
463
463
}
464
464
}
@@ -467,28 +467,28 @@ impl Iterator for CaseMappingIter {
467
467
type Item = char ;
468
468
fn next ( & mut self ) -> Option < char > {
469
469
match * self {
470
- CaseMappingIter :: Three ( a, b, c) => {
471
- * self = CaseMappingIter :: Two ( b, c) ;
472
- Some ( a)
470
+ CaseMappingIter :: Zero => None ,
471
+ CaseMappingIter :: One ( c) => {
472
+ * self = CaseMappingIter :: Zero ;
473
+ Some ( c)
473
474
}
474
- CaseMappingIter :: Two ( b, c) => {
475
+ CaseMappingIter :: Two ( [ b, c] ) => {
475
476
* self = CaseMappingIter :: One ( c) ;
476
477
Some ( b)
477
478
}
478
- CaseMappingIter :: One ( c ) => {
479
- * self = CaseMappingIter :: Zero ;
480
- Some ( c )
479
+ CaseMappingIter :: Three ( [ a , b , c ] ) => {
480
+ * self = CaseMappingIter :: Two ( [ b , c ] ) ;
481
+ Some ( a )
481
482
}
482
- CaseMappingIter :: Zero => None ,
483
483
}
484
484
}
485
485
486
486
fn size_hint ( & self ) -> ( usize , Option < usize > ) {
487
487
let size = match self {
488
- CaseMappingIter :: Three ( ..) => 3 ,
489
- CaseMappingIter :: Two ( ..) => 2 ,
490
- CaseMappingIter :: One ( _) => 1 ,
491
488
CaseMappingIter :: Zero => 0 ,
489
+ CaseMappingIter :: One ( _) => 1 ,
490
+ CaseMappingIter :: Two ( ..) => 2 ,
491
+ CaseMappingIter :: Three ( ..) => 3 ,
492
492
} ;
493
493
( size, Some ( size) )
494
494
}
@@ -497,37 +497,37 @@ impl Iterator for CaseMappingIter {
497
497
impl DoubleEndedIterator for CaseMappingIter {
498
498
fn next_back ( & mut self ) -> Option < char > {
499
499
match * self {
500
- CaseMappingIter :: Three ( a, b, c) => {
501
- * self = CaseMappingIter :: Two ( a, b) ;
500
+ CaseMappingIter :: Zero => None ,
501
+ CaseMappingIter :: One ( c) => {
502
+ * self = CaseMappingIter :: Zero ;
502
503
Some ( c)
503
504
}
504
- CaseMappingIter :: Two ( b, c) => {
505
+ CaseMappingIter :: Two ( [ b, c] ) => {
505
506
* self = CaseMappingIter :: One ( b) ;
506
507
Some ( c)
507
508
}
508
- CaseMappingIter :: One ( c ) => {
509
- * self = CaseMappingIter :: Zero ;
509
+ CaseMappingIter :: Three ( [ a , b , c ] ) => {
510
+ * self = CaseMappingIter :: Two ( [ a , b ] ) ;
510
511
Some ( c)
511
512
}
512
- CaseMappingIter :: Zero => None ,
513
513
}
514
514
}
515
515
}
516
516
517
517
impl fmt:: Display for CaseMappingIter {
518
518
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
519
519
match * self {
520
- CaseMappingIter :: Three ( a, b, c) => {
521
- f. write_char ( a) ?;
520
+ CaseMappingIter :: Zero => Ok ( ( ) ) ,
521
+ CaseMappingIter :: One ( c) => f. write_char ( c) ,
522
+ CaseMappingIter :: Two ( [ b, c] ) => {
522
523
f. write_char ( b) ?;
523
524
f. write_char ( c)
524
525
}
525
- CaseMappingIter :: Two ( b, c) => {
526
+ CaseMappingIter :: Three ( [ a, b, c] ) => {
527
+ f. write_char ( a) ?;
526
528
f. write_char ( b) ?;
527
529
f. write_char ( c)
528
530
}
529
- CaseMappingIter :: One ( c) => f. write_char ( c) ,
530
- CaseMappingIter :: Zero => Ok ( ( ) ) ,
531
531
}
532
532
}
533
533
}
0 commit comments